Eu uso NestedSet para armazenar a hierarquia ACL e cache para acelerar as coisas.
Doctrine ORM para PHP - NestedSet
Segue um post que pode ser útil também:
Zend_Acl parte 3:criando e armazenando ACLs dinâmicas | CodeUtopia - O blog de Jani Hartikainen
(dê uma olhada nas duas partes anteriores também).