A questão ai seria entre usar Hibernate puro ou JPA. O que é melhor? Depende.
JPA é uma especificação de um framework ORM, foi feita inicialmente baseando-se em Hibernate, mas tem algumas diferenças. Tenta imaginar JPA como a receita do bolo. Quem quiser pode implementar aquela especificação, e dai surgem os diferentes providers JPA: Hibernate, Eclipselink, etc.
Seria como imaginar que um orgão internacional especificou um padrão de parafuso (mas não construiu um, só especificou). Os fabricantes de parafuso, construem parafusos seguindo aquele padrão se quiserem.
No caso do Hibernate, existe a implementação própria, que não segue a especificação JPA, o que eu chamo aqui de “Hibernate puro”. E existe também a implementação JPA do Hibernate, ou seja, a implementação do Hibernate que segue a especificação JPA.
Considerando somente as duas versões do Hibernate, puro e JPA, a diferença eu eu considero mais relevante é que a versão “pura” evolui mais rapidamente e normalmente está sempre a frente do JPA em termos de funcionalidades. JPA por ser uma especificação e ter todo um processo para ser evoluido, evidentemente demora mais.
Entretanto, quando se usa “Hibernate JPA”, você acaba tendo os dois mundos. Pois você pode muito bem usar o padrão JPA, e naqueles casos obscuros onde só Hibernate puro resolve o seu problema, é possível usa-lo também.
Resumindo, use a implementação Hibernate do JPA. E se um dia surgir a necessidade de usar algo que o JPA não suporte, você pode usar o Hibernate puro onde quiser. O JBoss suporta os dois sem problemas.