Sometimes, kids just don't like their names. I think you're right- he's probably too young to be getting self esteem issues- but it's probably worth checking if there's any bullying or anything at school, especially if he has an unusual name, or one that could easily rhyme with a 'bad word'. (Keep in mind that at 4/5, a 'bad word' could be 'rude' or 'poo' or something. A bully in my class only about a year or two older than your son did this to me because my old name was a) hyphenated, and b) my slight speech impediment meant I could not pronounce my own name).
But it's more likely that he just doesn't like his name. You can't take it personally- there are literally millions of names to choose from, and only one of your son. If he prefers another name, my suggestion would be to tell him that you support him with whatever he'd like to be called, and start calling him that name, wherever and whenever he wants to be called that. Think of it like a nickname- I can't tell you the number of people in my class around that age who disliked their name and used a nickname or another name. Within a couple years, I think it was probably at least a third of the class. It's a lot more common than you might think to prefer another name, and it doesn't necessarily mean anything is wrong!
So, in conclusion, I would suggest inquiring about possible bullying, and if it's not that, supporting whatever name your son might want to use. It may be a phase, in which case it will blow over probably in a few months at most, and he'll come out of it knowing that you and your husband will always support him, no matter what happens. That can never be a bad thing to teach a child. If it isn't a phase, well, when has a nickname ever hurt anyone? He'll still know you support him, and he might feel happier and better about himself, if the people he loves use a name he likes.
Best of luck!