Um genau zu sein liegt das daran, dass bei Verwendung von array of als Variablentyp jeweils ein neuer Typ angelegt wird. Und damit ist das ein anderer Typ als ein anderswo deklarierter.
Na ja das ist ja wohl eher ein Nebeneffekt. Der Hauptsinn von offenen Arrays ist doch, daß man Sachen wie zB
function Mean(const Data: array of Double): Extended;
(aus Math-
Unit) implementieren kann, ohne mit Pointern (plus Längenangaben) zu arbeiten zu müssen.