TList ist keine Komponente, sondern eine Klasse. Und so eine Klasse hat genau eine einzige Aufgabe: Implementierung einer Liste.
Wo wurde behauptet, daß TList eine Komponente ist?
Deine SW wäre mit TListen übersäht, wobei das OnBefore... ständig umgebogen würde. Hmmm....
Wiso? Eine virtuelle "DoBefore" wäre doch hilfreich. Wenn ich von TList<> eine Ableitung schreibe, dann muss ich diese virtuelle Methode einfach überschreiben und schon habe ich eine Klasse, die genau auf die Anforderung angepasst ist.