いろいろなご意見、ありがとうございます。

>>956
Dataへの代入時にFDataを実際の型でCreateしてますんで、
WriteComponent時にはきちんと保存できているようです。

>>958
TComponentから派生させるように作り直すことも考えたのですが、
先ほど簡便性のためにTData1,TData2...TDataNなど書いたクラス群は
実際にはTCustomDataA,TCustomDataBとあり、
さらにTCustomDataAを継承したTDataA1,TDataA2...というクラスが
数十個、すでに構築されてますんで、これをすべてやり直すのも
いかがなものかと思ったわけなんです。
どうせTHogeは、ファイル入出力時に一時的にCreateするだけですし。

>>959
近いものとして、以下のようにしようかとも思いました。

THoge = class(TComponent)
public
 property Data: TPersistent read FData write SetData;
published
 property DataType: TClass read FDataType;
end;

Dataプロパティへの代入時、FDataTypeへその型を代入しておいて、
読み込み時にはFDataTypeに代入されている型をもとにFDataをCreateさせようかと。
もっともそのためにはDataプロパティを偽プロパティを設定して
読み書きする必要があるかと思うんですが。