First I just want to say that your LOs variety from what you have described is better than some "picky eaters". That being said, I can understand your concerns about his limited variety, and how it can impact the whole family when stress around meals develop!!
if your LO is an adequate weight and has an adequate appetite (for the foods he likes) then I would personally just continue to offer a large variety of foods and try to avoid offering large amounts of his "favorites" because you are worried he will not eat. Pick 3 or so foods for each "meal" that are healthy and then just let him choose what he wants to eat/not eat on his own.
You will get differing opinions on this, but personally if my LO was becoming very "picky" I would try very hard not to offer the "favorites" very frequently for a short time. I say this because often a LO who has become very picky will hold out for the "favorites" and refuse all other foods. If you limit the favorites for a week or two, and just offer new foods, most LOs will find other things they "like" and will accept. You can also try "changing" his favorites a little bit so that he gets used to changes in his food (i.e. eggs prepared different ways, unfamiliar brands/kinds of yogurt, etc...). Even changing little things like how his food is cut up, etc... can help him get used to little changes in eating.
The key really is to not make it a power struggle and to stay calm and consistent. You want your LO to understand that it is his job to decide what he eats from the choices you have provided, but it is your job to decide what his choices are. Offer the foods you have chosen, and then let him pick what he wants from those choices. I would avoid "short order cooking" or giving him a substitute food for a while even if he is whining/tantruming for it. So if you presented green beans, chicken, and bread for supper and he wants yogurt, personally my response would be a calm "these are your choices right now" and then let him have the freedom to choose. If he tantrums or refuses to eat I would certainly respect that, and end the meal. If he is hungry later you can either offer the same choices or some different choices (but not the "favorites"). That way you are setting up a healthy dynamic, where you have some responsibility in the feeding situation (namely what foods are presented, where he eats, etc...) and he has the appropriate responsibilities (namely how much he eats and what he eats from the choices provided). It is also OK to offer larger portions of the fruits/veggies and much smaller portions of the other foods for a time if this is really where your concern is. We often offer 2 veggies as an "appetizer" for every meal before the other foods are even on the table, and then during the meal offer more veggies and portions of whatever else we are eating for the meal. The most important thing is to be consistent, even if you encounter some resistance and tantrums (which you porbably will!!)
I would also personally look at his "feeding routine". I am not sure from your above post what it is, but if you have a LO who is not eating well I would make sure he is not snacking throughout the day and I would also look at when foods are presented during the day. If you are trying to extablish when to give snacks I would try to give them closer to the prior meal instead of the upcoming meal. So for example, you might give breakfast at 7:30, very small snack at 9:30, lunch at 12:00, very small snack at 2:00 before nap, and supper at 5:30 or 6:00. This way there is a bigger gap between the snack and the next meal so that your LO will be more motivated to try new things. I would also say be creative with your snacks. They don't have to be "snack foods". They can really be meal foods or anything you want!!! I would also limit milk before meals. Our LO actually only gets milk with meals and water in between, as often milk to close to meals will decrease the appetite.
I realize that to some this approach is a little too "strict", but I have found that if you really establish a good give and take with the feeding then you can have much more flexibility later on. Some would argue that you should just go with the flow as far as the "favorites" and let them eat yogurt for every meal if that is what they want for a while. I think it is a personal decision for every family. For us it was very important that we ate as a family, that we could all eat from one "meal" without having to present lots of alternate foods (expecailly since we want 4 kiddos), and that fruits and veggies were a very big portion of our son's diet (partially due to the fact that obesity runs in my DH's family). Because of this a more structured approach was the right one for our family.
Hope this was helpful in some way. Again, this advice was more geared to a LO with an adequate appetite (if only for certain foods) and a healthy weight. If your LO is really underweight that may be a different story. I was kind of guessing as far as how you are doing things now, as I wasn't sure based on your initial post, so if some of this doesn't apply to your situation then feel free to disregard

. Hope you find what works for your LO and your family!!!