@Sagesoph,
I think the way you handled it - both times - was fine. I am assuming there's no feud caused by this, so you're golden.
The first time, you were knocked for a loop. The second, you were firm. I don't see a problem and I don't see mixed messages, either.
Now, for the next occasion - clearly they are either forgetting (possible) or are passive-aggressive (again, possible). There may be other reasons but I'll go with those as being probably the most likely ones.
So, what to do? Maybe the thing to do is head them off at the pass. Say, something to them like, "
Dave and Sue (or whatever their names are),
we love you and appreciate your gifts, but we'd previously agreed not to exchange any. Here's what we would like to do instead. Let's pick a charity and all donate to it, in the kids' names."
And then pick maybe three possible charities. Involve your children if they are old enough. Nothing super-controversial; this isn't the time to donate to support legalizing pot or (name your controversial topic of the day). I am thinking more like a local animal shelter or zoo, or the library, or guide dogs for the blind or cancer research (particularly if a loved one has suffered). Make sure that you give a larger percentage of the total than your inlaws do. It's not a competition, but you're not on a fixed income, whereas they are. So if the total gift is $100, and they give $35, and maybe your kids give $5 in chores or out of their piggy banks, then finance the remaining $60 and call it a day.
1) They get to give a gift
2) Your kids become involved and this is a good lesson for them, to give to the less fortunate
3) You don't get a plate or other tchotchke that you don't need
4) This addresses both forgetting and anything passive-aggressive in this dynamic.
And if they still get you something after all of this, refuse it without guilt.