It depends on how much you want invest. If you are willing to spend $200-300, a dentist custom made mouthguard would be your choice.
These kind of mouthguards are the best I know of (there are other brands which work with similar technique)
So called "boil and bite" mouthguards range from $5-$40. These you put into hot water for 90sec so they get soft then put them into the mouth to mold them on the teeth. If your son is not starting full contact competition right away, a good boil and bite mouthguard is sufficient.
How old is you son¿ For younger people there are smaller sized "boil and bite" mouthguards, usually having something like "junior" added to their name.