Change owner always follows role hierarchy, and there are scenarios where other models are more appropriate.
Now that we can use flows in system mode, its very easy to create alternative models. I built one that allows users in the same role to transfer contacts owned by their colleagues. This allows the primary operations person in a given offfice to handle administrative tasks. Otherwise you have to give them the director role, which makes no sense anywhere else. Or just give them modify all data, etc, all bad solutions for what should be a simple thing to fix.
I have this button built and many people use it, but many people also try to click the 'change' button next to owner, and get confused. Confusion is bad. This should not be a training issue, this is something we should be able to customize. And then we can throw confetti once the owner change is complete.