You've touched on two good reasons why you'd want to allow name changes on a site (not just Stack Exchange).
Making your user name more "professional" or perhaps a better term would be "appropriate".
For a site like Stack Overflow which attracts both professional and amateur programmers it could be that you signed up while you were still dabbling with programming (or whatever the topic is) so a funny and/or frivolous name would be not seen as inappropriate. However, if you decided to take things further then you'd want to be seen as a more serious contributor, and if your past contributions were valuable you'd want them still to be associated with your account.
Stack Overflow does emphasise the content rather than who posted it so it deliberately de-emphasises the name of the contributor. In that sense it doesn't care what your name is (within reason) so it doesn't make sense to disallow name changes.
Other valid reasons for changing user names:
- Anonymity. If you signed up for the site and used your real name as your user name you may now have decided to that you're not comfortable with that and want to become "user1234" (or whatever).
- Name change. You still want to use your real name but this has changed for some reason (marriage, divorce, adoption, etc.) and naturally you want your online presence to match this.
Yes, allowing name changes can potentially make life difficult for other contributors, but if only one of the name or avatar changes at any one time then this disruption is kept to a minimum.
From a moderation point of view we have the user account id and a history of moderator actions on that account so the name currently displayed is less important.