Ich würde die Add() Methode nicht überschreiben, sondern eine neue Methode (z.B. AddObject) einführen.
Damit umgehst du die Probleme.
Du könntest sogar eine weitere Komfortfunktion dazupacken:
Delphi-Quellcode:
// Object erzeugen und in die Liste anfügen in einem Aufwasch
function TMyObjectList.CreateAndAdd:TMyObject;
begin
result := TMyObject.Create;
AddObject(result);
end;