£300 on a shirt for the boyfriend, sprung on you after the fact, with no discussion beforehand about budgets for anyone else - honestly, you'd be well within your rights to hit the fucking roof over this one.
The bit that stands out is the order of events. He didn't come to you and say "I want to spend big on DD's boyfriend, what should we do about everyone else's presents" - he just went and did it, then showed you afterwards like it was a done deal, proud as punch. That's not really about the shirt, it's about being cut out of a decision that now affects the whole family's Christmas budget, and that's exactly the kind of thing that needs nipping in the bud straight away, not smoothed over.
A few things worth being firm about:
You're not being unreasonable to be furious. You hadn't even settled your own budget for the kids and their partners, and now you're being forced to react to a number he chose alone, without so much as a heads up. That's not on.
"No accusations of favouritism" is the real issue, not the £300 itself. If it were just an odd, generous, one-off gift, it might be easier to let go - the problem is it sets a benchmark everyone else will notice, particularly your own children, who'll clock that a boyfriend of a few months got more thought and cash than they did from their own parents.
Him refusing to return it tells you where his priorities sit. He's had the chance to fix this cleanly and has chosen the gift over sorting the mess it's created. That means the whole cost, financial and emotional, of "equalising" everything gets dumped on you, and that's not fair.
Don't let him decide the terms of this by default. He doesn't get to unilaterally set a £300 benchmark and then leave you to scramble round it. This needs a proper conversation, now, about spending being agreed together before the money's spent, not after.
This is exactly the sort of thing worth being direct about immediately, not next year, not "let's see how it goes" - tell him plainly it's not okay to make big spending decisions like this without you, full stop.