My four year old is similar to that - has his favorite/willing to eat foods and not too excited to try new things. And like yours, his palate has shrunk considerably in the past year. Seems like foods are dropping from his "acceptable" list every week! I'm always confused as to what he will like and it drives me crazy when he picks out something at the grocery store, or helps me make something for dinner, only to snub his nose at it when it is time to eat. (Anyone need a bag of baby peppers for snacking? He asked for the big one, used to eat them, and instantly admitted he doesn't want to eat them anymore when we got home. Sigh.)
As a result, I do ask him what he wants for breakfast and lunch and he gets one shot to tell me. If he changes his mind after I make it, too bad. Eat it or don't eat it; I'm not making anything else. He knows he won't get anything else until the next scheduled meal/snack time. We don't do all day grazing. Threatening to give his food to the dog seems to motivate him, too!
I do try to keep in tune with when his hungry times are. They are not always the same as normal meal times so if we don't need to be out the door for school or something, I can adjust. Perhaps just strawberries instead of breakfast, but then the mid-morning snack is something more substantial. If dinner is going to be ready later than when I think he'll be hungry for it, I put out some parts early as a snack - like frozen peas, cucumber slices, whatnot.
Knowing when he is hungry is a real bonus to getting him to eat. He just doesn't go for the "normal" times and his window is very small. He doesn't get hungrier if he waits, he just gets over it. I'm the opposite!
For dinner, I make what my husband and I want, and like you, I don't make anything I know he won't like or is too spicy or something. I always serve at least a few items of something he likes/used to like. If he doesn't eat it, he doesn't eat it. He is old enough to make that choice.
However, he always gets a bedtime snack, regardless of whether or not he ate dinner. This is small and includes a fruit and/or veggie and either 3 oz. of milk or water. Nothing large enough to replace dinner but enough to keep him from complaining of being hungry after he gets in bed. His current favorite snack is blueberries, baby carrots, 4 mini-crackers and water. He can eat while we read stories. If he dawdles and doesn't finish before the stories end, he doesn't finish.
I've tried to make food fun (made an adorable face out of some things for lunch last week only to be told, "mommy, I don't like faces," as he immediately got down from the table). He does the shopping with me. He picks things out from the vendors at the farmers market each sunday and samples while we are there. He often helps with the cooking and prep work. He has input on meal ideas. In short, he is involved with our food, except for eating it!
But that's who he is. For now... :)