He is doing good with dairy, but he needs fruit/veggie and protein, so think of ways to work on those to appeal to him. One thing my boys love, it oatmeal, with fresh fruit thrown in. I add in some fiber and wheat germ to hide in extra nutrients (fiber is good esp if he is not eating any veggies).
I was a very bad eater, even worse than your son, and I also had sensory issues. It did effect my growth as my Dr.s predicted it would, but I finally eat fine now, some 20 years later. The Dr's told me they would have to start feeding me via iv tube if i didn't start eating, and that helped encourage me.
I was given a diet of carnation instant breakfast drinks and bars and pretty much forced to eat them. I had things i would eat, so long as they were prepared to my sensory issues... hamburgers okay, so long as they were dry, spaghetti okay, so long as no sauce, lettuce and carrots okay, so long as I could dip them. Food could not touch on my plate....
Keep offering new foods, even if he refuses them, keep offering them. I make my kids eat... they can eat 3 big bites or 10 little bites, but they have to eat at least something from each portion of the meal. No candy, no desert, no tv, no toys, if they do not eat, they go to bed. They can go sit in their room for a time out to think about if they want to eat or not, then they come back to the table and eat their dinner. We make it as pleasant as possible and then we do something as a family afterward.
Also, I do not prepare different food for them, and I don't make another meal for them later if they are hungry. I don't make dinner and then a pb&j sandwich if they cant handle what I have made. Overall, my kids are now wonderful eaters. But I also make sure my meals are not only healthy, but also tasty and appealing.
My sister does none of this, she doesn't cook dinner, and if her kids don't want to eat what she does offer, she gives them a giant brownie or lollipops instead. I don;t think her 3 year old has ever had a proper meal.