I think it's not there because it would need a fair bit of work to make it function well in all cases. I find that folks who have a lot of similar events are the ones who are most surprised it's not available. Part of it may be that their needs are simple (they don't have to deal with price differences), and part of it may be that they're more likely to have people switching between similar events.
The database side isn't too complicated. You'd need to update the table that aligns participant records and contributions, and then the contribution would appear to apply to the right event. I've even done this manually through the database for someone who was in a pinch and had a bunch of people on the wrong event.
However, you'd need to decide what happens when the paid amounts are different, the financial types for the two events' fees are different, and the meaning of the price options of the two events are different. For the latter, I mean this: what if someone wants to change their registration from the $200 ticket for the annual gala to the $200 VIP sponsor ticket for the picnic in the park? That information is in the price option selected, and you'd need to decide what happens when that moves.
Finally, there's the issue of partial credit or overpayment--when the prices aren't the same (as you mentioned).
Again, there are technical solutions to all of this, but the assumptions that one person may make aren't necessarily what the end user would make. A solution that goes into core needs to be reasonable for everyone.
What Joe mentions--a cancelled registration and a new registration--is almost certainly the way to go. You can do that now; the only real issue is when the bookkeeping shows a refund and payment that never really hit the bank account--you're just applying the credit for the one event to the new event. Automating that would be very convenient for many CiviCRM users, but it would also cause confusion and pitfalls for others.