J'utilise NestedSet pour stocker la hiérarchie ACL et le cache pour accélérer les choses.
Doctrine ORM pour PHP - NestedSet
Voici un article qui peut également être utile :
Zend_Acl partie 3 :création et stockage d'ACL dynamiques | CodeUtopia - Le blog de Jani Hartikainen
(regardez également les deux parties précédentes).