Laut `tcolorbox`-Anleitung wird `before` nach Überschriften nur angewendet, wenn `ignore nobreak` auf `true` steht. steht:
> It is not used for floating boxes. Also, it is not used, if the box follows a heading immediately and `/tcb/ignore nobreak` is set to `false`.
Die Voreinstellung von `ignore nobreak` ist `false`. Also wird `before` nach Überschriften nicht angwendet.
Aber Du denkst vielleicht auch einfach zu kompliziert:
\documentclass[chapterprefix,parskip=half,draft]{scrreprt}
\usepackage[theorems,breakable]{tcolorbox}
\usepackage{showframe}
\tcbset{after={\parfillskip 0pt plus 1fil\par}}
\newtcbtheorem[number within=chapter]{definition}{Definition}%
{left=1em,right=1em,toptitle=1mm,fonttitle=\bfseries\sffamily,separator
sign={:\ },description delimiters parenthesis}{th}
\begin{document}
\chapter{Eins}
\section{Eins}
\begin{definition}{Test}{}
Text
\end{definition}
\end{document}
Wie bei anderen Absatzparametern gilt für den gesamten Absatz auch bezüglich `\parfillskip` die Einstellung *am Ende des Absatzes*. Also genügt es, vor dem finalen `\par` einen passenden Wert einzustellen. Dieser gilt auch nur innerhalb der `tcolorbox`-Umgebungen. Das direkte Setzen von `\parfillskip` hat in diesem speziellen Fall den Vorteil, dass es unabhängig von der aktuellen Einstellung von Option `parskip` funktioniert.
BTW: Mach doch mal einen Feature-Request an den `tcolorbox`-Autor. Der ist normalerweise sehr aufgeschlossen. Vielleicht kann er das ja in den Code einbauen, den er ohnehin verwendet, um festzustellen ob mit Absatzabstand gearbeitet wird oder nicht. Der ist zwar eigentlich für das Paket `parskip` aber auch dieses setzt inzwischen `\parfillskip`, wenn man Option `parfill` verwendet.