Here's my non-traditional view.
I'm not a nutritionist, but over an extremely variable athletic career over many, many years where I went back and forth between power/speed sports and endurance sports I've managed to add 20 pounds, then lose 25-30 for endurance sport, swap back and put 35 back on for several years, then swap sports again and drop almost 40 and even at my heaviest, kept bodyfat around 10%.
In a gain cycle, almost nothing helps more than red meat, followed closely by pork. Neither really has to be lean. The fat in these foods is extremely nutrient and calorie rich. The less processed they are the better, but ground beef and ground pork are ok to help with the budget. Fatty fish like salmon or canned tuna are also great. It's best to cook this stuff in a griddle or skillet versus a grill. On a grill, a lot of the juices (containing nutrients and calories) drip down into the grill where in a griddle or skillet a lot of it gets reabsorbed. Eggs should play a role in protein intake also and there should 100% be a decent amount of protein for breakfast. Milk is also pretty calorie dense.
Bulk calories from potatoes and rice are great, and don't be afraid to use real butter on both of these. whole grains are ok. Fill in with whatever veggies. Try to get complex carbs with meals.
Sugars and simple carbs are optimal right before and during high effort workouts. Fruits are ideal before, but if he needs some type of hydration drink during, skratch labs is the best option out there. Within 30 minutes of a high effort workout, top off with either a protein shake or other high protein input. I always used chocolate milk and a protein powder. 30 minutes is critical as that's the window in which the body can absorb the most nutrients/carbs into the system to maximize the body's ability to build muscle and recover. Don't overdo the simple sugars, but a scoop of ice cream a night isn't the end of the world. I would make a milkshake with icecream, peanut butter and milk shortly after dinner a lot of nights.
Anything with any type of artificial sweetener or non-sugar sweetener has to be absolutely avoided. This includes splenda. No 'diet' or 'zero' products ever and anything with 'low-calorie' needs a very careful reading of the label. Even some things that claim no artificial sweeteners will have splenda or tree sugars or other things and they make that claim since the stuff is plant based. The body senses the sweetness and triggers the processes to absorb and use the sugars even if they are not present. Over time this reduces the body's ability to process sugar at all and it throws everything out of whack.
I wasn't ever a fan of the blanket calculators that had a standard number of calories per day and consuming that every day. I think those are good for averages, but I always used a 2-3 day rolling view where I matched calories to the activity for the day and the next day. i.e. on a heavy effort day the calories would be higher, but on off/rest days the calories would be a bit lower (even when trying to gain).
It takes 3500 extra calories to gain an additional pound, so 4 pounds in a week would mean 14,000 extra calories spread over the week. It's way easier to do this by adding meals throughout the day instead of each meal being bigger. Breakfast, second breakfast, brunch, lunch, dinner, supper.
He needs to lift HEAVY. Like heavy enough that the 5th rep on each set is the failure rep. 4-6 sets per exercise with decent rest between sets. Focus on the big lifts that use the most muscle groups but also add some hinge exercises to stay balanced in the lower body.
Rest is also critical. Not just recovery between workouts rest, but overall getting plenty of sleep. 8 hours should be the min. Tired and fatigued is the enemy of strong and fast.