Out of curiosity I had a look at the current implementation of `reverse-region' and found it quite complicated and hard to understand what it does.

I don't have any for or against opinion on this (may be a slight against, based on the "if it's not broken, why 'fix'" motto). I have been using `reverse-region` for many years and it works just fine. 

Probably it works just fine, as you say. I agree there is a risk fixing something that is not broken. I also think it is generally a good thing to make code more readable and if code can be made more readable and at the same time be made smaller (which often increase readability), without any negative side effects, it is a win for maintainability of that code base, in my opinion.

At any rate, this was just something I happened to notice and I thought it would be fun to have a go at it.