Creo que puedo haber caído en el mismo problema. Mi consulta hace múltiples uniones, entonces el resultado sin procesar puede devolver varias filas de la misma clave principal, cada fila se cuenta con .count(), sin embargo, cuando llama a .all(), se aplica una distinción en la clave principal y solo única se recuperan las filas, que el número de registros en la lista .all() es diferente de .count().
Esto debería ser igual:
query.distinct().count() == query.all()
Saludos cordiales