If I were an elderly person having a milestone birthday, and there was a surprise party planned for three weeks after the fact, I would be hurt if my actual birthday came and went without *some* acknowledgment/celebration (not knowing everyone was saving their thunder for a big do three weeks later).
Why on earth couldn't MIL and other local family members take Grandma out on her birthday, and let the big gathering happen as scheduled, with all the relatives who made travel and time off arrangements there as planned? Of course, that would have required MIL to keep her mouth shut to Grandma about the second party.
I recently co-planned a surprise 65th birthday party for my SO. It was after the actual day (but two days, not three weeks). His actual birthday fell on Black Friday, and a friend throws a Black Friday party every year that SO enjoys. I gave him his card and gift on Friday, and if we hadn't already had a party to go to, I would have taken him out for a low-key celebration that night so he wouldn't suspect there was something planned for Sunday. (It worked -- he was totally surprised.)
BTW, I don't see anything in the OP about the actual birthday dinner being at the same restaurant as the surprise party. Did I miss something?