Das liegt in der
RTTI.
Es wird nur ein Integer (NativeInt) zur Speicherung verwendet.
Dort drin ist dann entweder der Wert codiert (32 Bit) oder ein Funktionszeiger, falls man eine Stored-Funktion angibt.
Auch die Funktionen für den Property-Editpor haben nur 32 Bit für die SET-Funktionalitäten.
Theoretisch würde ja ein String auch dort rein passen, aber den kann man unterklärlicher Weise nicht "direkt" als DEFAULT angeben.
property Str: string read GetStr write SetStr default 'leer';
geht nicht, aber das kann man inzwischen (hässlich mehrzeilig) über ein Attribut
[Default('leer')]
erledigen.