All children should be eating a varied diet full of fruits and vegetables (so yes, he needs fiber), protein, whole grains, and nutrients such as iron and calcium.
Since your son is underweight and has a milk allergy, he may need more calories and some creative ways to get calcium. Talk to your doctor about meeting with a nutritionist to help you pinpoint what he should be eating.
You say that your son is a picky eater. Its my experience that most kids are picky even more so if they are allowed to be. If you only give the picky eater the foods you know he likes, he wont learn to like other foods. Kids can learn to like other foods. But it can take many, many tries before they do. So keep adding new foods (especially fruits and vegetables) to his plate along with the things he likes. Have him take at least a couple of bites. Over time, he just may surprise you and himself!
Its also important to show your child healthy eating habits yourself by eating a varied and healthy diet. After all, kids pay more attention to what we do than what we say.