I am sure Margo was plenty annoyed, and I don't blame her. Claudia was way, way out of line all the way through.
But I still think that Margo was PA and, although she only did it when Claudia started up again, she was not very nice. Once you are hosting someone, you have a duty to be gracious and make them feel welcome, not keep reminding them of their lapse and shaming them.
I think she should have have reapportioned the salmon, and if there absolutely wasn't enough (which I find pretty hard to believe -- did she make exactly 3 ounces per person or something?), then Margo, as the host, should have been the one to eat something else -- the same as she'd do if some of it dropped on the floor or something. Alternatively, she could have spoken with Claudia privately before dinner, explained the situation, and discussed the alternatives: Claudia and the boys leave, or the boys eat something else instead, or she orders them a pizza that they eat in front of a movie in another room, or whatever would work.
I repeat, I would have been totally steamed in Margo's position, and I'd have trouble living up to my own advice. But I've seen hosts behave both ways, and I know who I admire and who I thought was being childish. Retaliatory rudeness is not okay. Shaming your guests --no matter how they got there! -- is not okay. Once Margo agreed to let them stay, she needed to treat them the same as her other guests. (Although I'm sure it wasn't easy given Claudia's behavior!)
I also think Margo threw cold water on her own party. The OP is probably not the only other guest who spent a good part of the evening and afterward thinking about whether Margo was rude or unkind. If I had been one of the other guests, especially if Claudia were also my friend, I would have been very uncomfortable and embarrassed.