Jupp, Generics werden beim Compilieren über eine Art globalen Cache verwaltet.
Wurde einmal ein generic implementiert/verwendet, und kommt an anderer Stelle nochmal "neu" vor, dann wird die bereits bestehende Deklaration verwendet.
z.B. TArray<irgendwas> in einer
Unit und TArray<irgendwas> in einer anderen
Unit sind somit identisch.
Im Gegensatz dazu sind "array of irgendwas" an beiden Stellen "neue" deklarationen und somit jeweils "eigene" Typen.
In einer anderen EXE/
DLL natürlich nicht mehr, weil neues/anderes Compilat.