Acho que posso ter caído no mesmo problema. Minha consulta faz vários Joins, então o resultado bruto pode trazer de volta várias linhas da mesma chave primária, cada linha é contada por .count(), porém quando você chama .all() um distinto é aplicado na chave primária e apenas exclusivo linhas são buscadas, então o número de registros na lista .all() é diferente de .count().
Isso deve ser igual:
query.distinct().count() == query.all()
Atenciosamente