Utilizando o pager do doctrine observei uma inconsistência nos resultados paginados, e ao pesquisar descobri o seguinte:
o paginator gerava o código:
SELECT ... ORDER BY weight DESC LIMIT 10 OFFSET 10
acontece que o mesmo registro que aparece na página 2 aparecia também na página 5, isso porque o Offset do postgres necessita obrigatóriamente de um order by único para o offset funcionar corretamente.
Meus registros estavam todos com o weight = 0, ou seja, não havia uma ordem única e fazia com que a paginação não funcionasse corretamente.
Então a dica é sempre ordenar por peso (weight) e mais um outro campo único, como o id por exemplo.
link útil: http://www.postgresql.org/docs/8.3/static/queries-limit.html