We have a Purge by Date function, where we query JBPM_PROCESSINSTANCE for instances that have ended before a given retention date, and then delete the process instances returned by that query.
We also modified jBPM's logging to restrict the type of log records that get generated (JBPM_LOG is the biggest disk hog of the bunch). For example, turning off variable update logging reduces the log table size and activity by about 50 percent.