TPersistent.Assign bzw. TPersistent.AssignTo machen nichts außer Fehlermeldungen anzuzeigen. Weshalb es diese Implentierung überhaupt gibt hab ich noch nie verstanden? TStrings.Assign ruft TPersistent.Assign auf wenn Source <> TStrings ist. TStrings hat kein AssignTo. Deine Klasse braucht deshalb ein eigenes AssignTo oder mit TStrings.Assign arbeiten (falls möglich)?
Der Punkt ist, dass mit dem Überschreiben von Assign die Verwendung von AssignTo in Ableitungen verhindert wird, da sie ja nicht mehr aufgerufen wird wie in dem Fall von TStrings.