+/- …
JPA = especificação, ou seja, todos os frameworks que implementem essa especificação tem que implementar todos os requisitos da especificação.
Não existe um meio de usar só JPA, SEMPRE haverá um framework que o implementa para que vc possa usar, porém, se quiser trocar de framework e eles atenderem a especificação nao precisara alterar seu codigo, pois todos possuem todos os requisitos da especificação
De uma maneira bem simples podemos imaginar que:
A especificação JPA requer que os seus implementadores disponibilizerm o metodo save(Obj o);
então todos os frameworks que implementem a especificação devem ter este metodo. Logo não importa qual framework usar, o codigo vai ser o mesmo.
Agora se vc quer usar o framework direto, como por exemplo o hibernate, vc tem ganhos com algumas funcionalidades que ele pode te oferecer, porem fica amarrado a API do framework, ou seja, a troca de framework pode ser um pouco mais complicada.
Um caso prático é o uso de Criteria do hibernate, com JPA 1.0 vc nao tinha acesso a este recurso, se quisesse usa-lo teria de usar hibernate direto.
//edit
JPA2 ja suporta isto.
//edit
mais sobre o assunto http://wpjr2.wordpress.com/2008/05/02/especificacoes-java-introducao-ao-java-community-process/
caso nao tenha sido claro poste de novo.
abrasssssssssss