Eu não sei sobre o Squeel, mas o erro que você vê pode ser corrigido atualizando o PostgreSQL.
A partir do PostgreSQL 9.1, depois de listar uma chave primária no GROUP BY, você pode pular colunas adicionais para esta tabela e ainda usá-las na lista SELECT. As notas de lançamento para a versão 9.1 nos digam:
BTW, sua consulta alternativa pode ser simplificada, um
DISTINCT
adicional seria redundante. SELECT o.*, c.my_count
FROM onetable o
JOIN (
SELECT one_id, count(*) AS my_count
FROM anothertable
GROUP BY one_id
) c ON o.id = counts.one_id