I hope that the adults know enough not to take the words of a preschooler personally. They don't have any sort of filter and bless them, they do say some pretty funny stuff.
I think SH pointed out that we need to remember that sometimes, kids are being observant and helpful. Although I think Patricia is also very right: we need to examine our own language. How often I hear parents dismissing their children's feelings as less-than-legitimate because "he's tired" or "she's been in a mood all morning"... Our kids are still *learning* to be in the group, to be socially appropriate.
Chances are, if your mom was brusque with your son in expecting him to wait to speak (which is hard for kids that age, but we still must teach them), then it would likely make sense to your son to label her behavior based on his observations.
But we are also the adults, and we need to KNOW better. Imagine, if you were having a hard day and aired that grievance, would you want someone to argue with you that "no, you aren't having a hard day, you are find and just reacting to XYZ"? I think most adults would experience this as utterly disrespectful of their feelings. Think about how many mothers on this forum come on to complain that their husband negates or dismisses their feelings. It's not something we humans take kindly to, no matter what age.
Instead, doing as others have suggested by giving him a little empathy-- this often helps. Keeping in mind that our little ones live *entirely in the present*, a bad five minutes CAN feel like 'the whole day' is bad for them. That's indicative of their immature perspective. So, saying "I know, you really wanted to get that toy car, huh? Part of life is that we don't get to buy everything we like. But I remember wanting toys when I was a kid, too, so I know how it feels." Our kids mostly want to feel like they are understood by us, mainly because they are still young and sometimes don't even understand their own feelings. They look to us to contain those experiences for them and to help them manage them.
And, then, too, there is always "active ignoring" as an option. For example, when he said that 'grandma's having a bad day', you could have kept on with your adult conversation and not rewarded his statement with attention. Because then, he was still able to interrupt effectively. You could then finish your conversation and come back to it: "What made you feel that Grandma was having a bad day?....oh, well, you know, people do get grouchy when they are interrupted/when they hear whiny sounds. It isn't pleasant. I don't think Grandma was having a bad day... she just didn't like being interrupted. No one does." Give him helpful information when it's the appropriate time, when you aren't trying to track two conversations at once.
And remember, he's still very little. I've worked with youngsters for a long time. What you are seeing is common, even through first and second grade. We HOPE that the kids don't feel they need to tell us their every thought, but they go through cycles of this. They hit pre-adolescence around 9 and it's often the season of arguing and discontent in many households. When we don't get emotionally hooked and can stay calm, empathetic, while giving good guidance,,, that's the best way to teach them.