This is a good question.
By exposing JPA entity classes to the rest of the system you expose the persistence mechanism and object to db mapping.You lose control over how these objects are CRUDded and managed. By breaking persistence encapsulation, a change can have a ripple effect on the rest of the system.
Future changes to system persistence may be impossible, awkward, limited and/or risky. Example: you may need to optimise for performance and/or scalability. This may require caching, db schema changes, non RDBMS usage, multiple databases. Encapsulation also helps to mitigate migration to future db schemas.
So the trade off is:
- managing and maintaining an application persistence layer on top of JPA which encapsulates persistence. i.e. an interface. OR
- decide to use JPA across the board in your architecture. Accept the fact that future changes may have system wide effects.
The first option may be necessary if frequent system wide changes are not acceptable - e.g. 3rd parties are accessing your data. Or perhaps you've decided on a 3 layer architecture: GUI, business logic, persistence.
The second option is ok if you have an agile development process and have control over the whole system and accept the fact that system wide change may be necessary down the line.