Então…
Eu, particularmente, acho mais interessante a abordagem de gerar relatórios utilizando SQL direto no relatório.
Utilizar SQL direto no relatório é interessante porque você tira bastante acoplamento desse relatório com a aplicação. Essa abordagem também possibilita a criação de uma classe genérica para mais de um relatório. Aí sim é tirado todo o acoplamento do relatório com o a aplicação, e na manutenção só é necessário mexer efetivamente no arquivo jasper. Outra vantagem é que, na criação ou alteração do relatório, não é necessário estar com a aplicação rodando pra ver o relatório funcionar. Pois como o SQL está no relatório, basta que o banco esteja ok, configura-lo no iReport e mandar o relatório rodar no iReport.
Resumindo, olhando pelo ponto de vista acima, eu vejo que a abordagem SQL é menos “complexa”, pois você pode ver mais claramente a distinção do que é o relatório e o que é aplicação e sabe mais rapidamente onde mexer caso necessário.
Acabei falando somente de prós da abordagem SQL e contras do JavaBean. Mas comparando as duas, no meu ponto de vista seria isso.