I agree certainly with the last two points, because that means you can handle saving, as well as throwing back errors etc.
Renaming? Yes, it would be nicer that way.
As far as making it a hook goes, yes, that's the sort of thing that should be a hook but the way it appears to be implemented could get interesting since it requires the ability to be able to selectively remove an item from the chain.
Off the top of my head I forget exactly how the hooks array ends up being, whether it is feasible to have hooked functions that function like that. Also, there is one stated use of that hook, which is what all the effort goes to - the question I have is what priority the existing hooked function should then have?
Basically, Profile-Modify.php lines 755 adds a function to that stack to reload the user if we're making a change and the current user is the user being changed (so we forcibly update the user information), but I would imagine that needs to be pretty much the last thing we do, no?