also, another consideration is that he may not be getting enough dietary fat. you've mentioned the large number of LEAN sources of protein that he eats -- which, ironically, may be part of the problem in the first place (well, if there's actually anything that can really be called a problem here).
remember that all of the body's natural steroid hormones (including testosterone and all the other androgens, whose quantity and circulation at your son's current age are laying the foundation for the rest of his life) are derived from FAT sources, including cholesterol. if your son's diet is too low in fat and cholesterol at this age, he may not fill out as much as with higher levels -- super important, as the effects of those things in the first couple of years post-puberty are irreversible to a certain degree.
you also didn't mention carbohydrates. does your son have an adequate carbohydrate intake for a high-school athlete? the boy is going to need a LOT of carbs, especially once you get into 2-a-day season.