Ao usar o NamedQuery não adicionamos responsabilidades a mais no em uma classe?
Ao usar o NamedQuery não adicionamos responsabilidades a mais no em uma classe?
Sim, mas não vejo como um problema. Com a NamedQuery podemos colocar as queries que são vinculadas àquela entidade.
Em relação a organização fica perfeito, mas sempre somos instruídos a diminuir a coesão e ao meu ver usando o NamedQuery está coesão aumenta...
Não exatamente. A instrução é diminuir o acoplamento e aumentar a coesão. Daí vem a frase batida: "Baixo acoplamento e alta coesão".
Coesão no sentido do seu código ter sentido. O problema é que essa questão que você coloca gera conflitos de opiniões. Na minha opinião, faz sentido (há coesão) uma named query estar em uma entidade, principalmente se o retorno daquela query é um objeto ou uma lista de objetos da mesma.
Quanto ao acoplamento, só haverá acoplamento se você utilizar qualquer tecnologia que não seja a especificação JPA. Se for JPA, você vai "acoplar" o código de uma especificação, não importando a implementação. Ou seja, ao meu ver, não há acoplamento. Eu posso mudar a implementação entre Hibernate, EclipseLink ou OpenJPA que minha query continua funcionando.