Plugin to maintain data integrity between related entries?
I think you've pretty much nailed the options.

1) Seems completely doable and relatively easy as of Craft 2.3 just like you described.

2) Is more difficult. You could go a custom field type route where you have settings defined which define which entry fields the cascading entry deletions occur on.  You could also probably cram your own modal/dialog choices into that event to present to the user for specific cascading deletion options (which is what I think you're also describing).

It probably be a lot easier if you didn't need to be concerned about which fields it happened to and you could go scorched earth and just recursively delete all reverse related entries regardless of the field or depth.  But I doubt that's the desired behavior in most circumstances.

I'd also be curious to see what an example of the use-case for this would be. My limited imagination is having a hard time coming up with something.