J.B.
Having just cooked two full holiday dinners at my own house in the past week plus helped my mother with her dinner yesterday, my sympathies lie with your MIL. A holiday dinner is a tremendous amount of work. Sure, she could have done a better job of accommodating your son's food sensitivities, but with everything else going on, it's hard to keep track of everything even if you're young and full of energy and still have all your neurons firing. When you get older, even mid 50's in my mother's case, you can't do it all as easily and it's a lot harder and more overwhelming to do everything.
So to avoid disappointment in the future, I would suggest that you plan on bringing some food and desserts that your son can eat. Size them for sharing so he doesn't feel singled out or that he has to eat a special meal, but this way, if there are lots of foods he can't eat, at least you can relax and know that there are plenty of things he can enjoy. Also, verify the time of dinner - were there other people there? Did they come earlier? How did they know that dinner was going to be served 3 hours earlier than you arrived but you didn't? Sounds like there was some sort of mis-communication about the plan for the day/evening there that hopefully your husband can clear up and avoid things like that from happening in the future.
Again, be generous in your judgment of her - hosting family dinners is hard. True, a lot of older relatives insist on doing them for the sake of tradition or because they're control freaks or because they don't want to go to someone else's house but that doesn't mean that it all comes together effortlessly. By bringing things you know your son can eat, you can relax and enjoy yourselves wherever you go, even if the hosts aren't as sensitive to his dietary needs as you would like or expect them to be.