ist ganz einfach.
Stell dir einen Constructor als Funktion vor.
Wenn du folgendes aufrufst:
Instanzvariable := Funktion_Gib_mir_Instanz();
so bekommt die Variable Instanzvariable den Wert erst zugewiesen wenn die Funktion zurück gekehrt ist.
Jetzt wird aber bei Forms das OnCreate aufgerufen und das im Constructor. Das heißt man könnte im Construktor nicht auf die Variable Form1 zugreifen weil diese ja erst ihren Wert bekommt wenn der Constructor zurück kehrt. Dadurch das aber bei CreateForm erst der Speicher angefordert und der Variablen zugewiesen wird, und dann erst der Constructor aufgerufen wird kann man innerhalb des Constructors bereits auf die Variable zugreifen.
Zugegeben wäre mir es lieber wenn dies nicht ginge denn es ist nicht im Sinne der
OOP das man auf eine globale Variable zugreift wenn man ebenso mit Self arbeiten kann.