Hi Simon.
I'm in agreement with you on this. It would seem reasonably rare to be in a situation where taking retrospective compensatory action wouldn't be adequate. I'm far more comfortable with the idea of using domain events in the way you describe, and I can foresee a pretty slippery slope if you set out from the beginning relaxing rules around transactional boundaries.
If I've learnt anything from software engineering over the years it's that, despite the good intentions of developers, if it's easy to make compromises, compromises will inevitably be made with increasing frequency. In this case, if you build a system that makes it easy to draw a transaction boundary at the application service level, it's inevitable that developers will eventually make use of it in ways that you never planned for them to.
Thanks for your thoughts.