The persistence of Activiti is completely hidden, but it is not the best solution in every case.
Let's talk about the situation when there is a requirement to display data joined from two different subsystems (one of them is bpm).
It's much easier to make such join on lower level (like db or jpa) then querying and joining results in format determined by Activiti API with something else (e.g. JPA entities), and applying any additional elements like filtering, sorting, etc.
So, maybe there are certain CTO's or 'architects' requirering an uniform persistence layer in 'their applications', but it doesn't make them incompetent.