Der Destructor Destroy von TInterfacedObject ist virtuell und wird automatisch aufgerufen, sobald der Referenzzähler auf Null fällt.
Alle Nachkommen müssen diesen Destruktor überschreiben, wenn zusätzliches Verhalten bei der Freigabe erforderlich ist.
Ich halte deinen Entwurf für ein Plugin-System für viel zu aufwendig und schlecht erweiterbar.
Wir hatten so ein Thema schon mal:
http://www.delphipraxis.net/186326-i...ufrufen-2.html