Per quanto riguarda la memoria massima utilizzabile, come ha già detto Eresia, il limite può essere impostato da php.ini con 'memory_limit',
Rimane il fatto che memory_limit può essere grande finhcé vuoi purché sia < della memoria dipsonibile sulla macchina dove gira lo script.
Cioè se hai 1Gb di memoria e setti il memory_limit a 2Gb dopo aver allocato 1Gb (anche meno in realtà) direi proprio che si schianta.
Per quanto riguarda invece il numero massimo di elementi,un array monodimensionale (su macchne a 32 bit) in teoria dovrebbe poter contenre 2^30 elementi perché il massimo indice usabile è appunto 2^30...
****edit****
Ah dimenticavo....
se stai leggendo un intero file in un array vuol dire che c'è qualcosa che non va nella maniera in cui hai progettato il tutto...
cerca piuttosto di leggere tramite buffer, ovvero di leggere tot byte alla volta dal file metterli nell'array usarli, leggerne altri tott ecc ecc