Event Sub-Process vs. Boundary Events

Under what circumstances is it more appropriate to use an Event Sub-Process for handling exceptions or cancellations (for example, triggered by an Error or Cancel event) rather than boundary events, and why?

This is very much a modeling semantics question and in many ways personal preference.
For me, I typically only use event sub processes when the same behavior is required (escalation, priority upgrade or similar) at many points in a larger process. An event sub-process keeps the model cleaner with less connectors.
Again, very much lore rather than law.