Es wird die Methode (Create) verwendet, welche im Basistyp deklariert ist.
Mit Virtual wird dort allerdings ein Eintrag in der
VMT der Klasse erstellt.
Und jedesmal, wenn diese Methode nun aufgerufen wird, schaut Delphi in der
VMT nach, was "aktuell" dort für eine Methode verlinkt ist.
Aktuell = Der Typ, welcher für die Erstellung der Klasse verwendet wurde, bzw. bei solch einer "class method" (in diesem Fall ein constructor) was in der
VMT des Typs deklariert ist, welcher in deiner Variable gespeichert wurde.
Also die Methode welche in diesem Typen als letzes per Override dort eingetragen wurde.
Wäre dein "Parameter" z.B. vom Typ TClass, würde in TObject nachgesehn, dort steht nur ein nichtvirtuelles Create und somit würde direkt das Create des TObject verwendet, selbst wenn es im gespeichertem Typ ein "neueres" Create gäbe.