Es wird automatisch freigegeben (aber nicht wegen des Parent, sondern weil du das Tabsheet als Owner übergeben hast im Constructor).
Das mit dem Debugger funktioniert, wenn du eine eigene Klasse ableitest und da einfach den Destruktor überschreibst--dann kann der Debugger da auch reinspringen. Ein OnDestroy-Event hat TFrame ja glaube ich nicht, oder? Wenn doch ginge es damit natürlich noch einfacher.