It's either a canker sore or fever blister, which could be the same thing. I always thought canker sores were on the inside of the mouth though, and fever blisters (cold sores) were what you got on the outside of your mouth.
I am knocking on wood as we speak because I am one of these fortunate people that get cold sores, frequently. I always have, since I was little. But, I don't just get one when they break out, I'll get two or three in the same spot making it huge.
Anyway, the best advice I can give you is this...ask your son to keep track of when he starts to feel the first tingle on his lip (which is what happens before they appear). Get some Abriva which can be found almost anywhere like Walmart, Walgreens, etc. and keep it handy. Have him use that whenever it first appears. Once you've had them enough, you know before it erupts on the skin.
As for where they come from, that's hard to say. If anyone in your family has ever had one and kissed him when he was a baby (and they didn't have to have a sore when they kissed him) he could have gotten it that way, as they are a form of herpes. Not the bad kind though, I know it sounds gross. They can be heriditary, or not. Like I said, I've had them all my life. My husband never got one until we were married for almost two years and we'd been together for a few years before that.
They can be brought on by a cold, fever, sunburn, or sometimes just stress. The only way to prevent them it seems is if you're going to be out in the sun, wear sunscreen on your face, and around the lip area sunscreen safe to be around the mouth.
Sorry for the novel, I just always like to try to help if I've been there done that. :o)