See attached project / Test case.
The rollback1 is correctly executed, but the rollback2 not. It diesn't find a event subscription when executing compensation.
Referring to docs it should work: http://docs.camunda.org/latest/api-references/bpmn20/#events-cancel-and-compensation-events-cancel-boundary-event: Note: If the transaction subprocess hosts nested subprocesses, compensation is only triggered for subprocesses that have completed successfully.
Haven't checked spec.