Bei dem Klassendestruktor frage ich mich jetzt aber genauso, wann der in Delphi eigentlich aufgerufen wird.

Die Reihenfolge ist einfach:
1. Klassenkonstruktoren
2. initialization der
Unit
3. finalization der
Unit
4. Klassendesktruktoren
Der Grund ist ebenfalls einfach:
In initialization oder finalization könnte ja die Klasse verwendet werden.