I've regretted inviting a couple of kids to DS1's birthday parties - but one of them was apparently one of his best friends, not from school but from playgroup. This friend had always been a bit rough, and they'd had a few issues with him hurting DS1, but they'd stayed friends and continued to play together. However, the end came at this birthday party, where he was the only one there to cause DS1 any problem (by hitting him on the head with something). Last time he came to our house. Such a shame as his mum was one of my friends - we tried one more time to socialise, this time at her house, but her Ds2 then pushed my DS2 over (I saw it) very roughly, and I realised that was It, no more. I'm still friends with the mum but we don't socialise any more and they don't get invited to our parties.
Similarly, I have a close friend who has children who are all on the spectrum in varying degrees. The oldest one is the same age as DS1 but is no longer invited to his parties, as she has a tendency to kick and punch DS1 while at school, or any chance she gets, tbh. It's very mortifying for the friend, and for me, but it's safer for the kids if they don't socialise outside of school. DS1 calls her his "frenemy" - and I give him the option to invite her or not, but I fully support when he says "no" because he doesn't deserve to be beaten up at his party.
I've talked to my friend about it and she gets it - it's still sad, for her, for her DD and for us - but I'm not letting DS1 get hurt.
I think the OP has done the best thing under the circumstances. I still don't support excluding just ONE child from a whole class party, however mean he's been - that's not "virtue signalling", it's coming from a place of understanding just how awful that feeling is, regardless of cause (happened to me at 14). Yes, he doesn't deserve to go to parties because he's hurt the OP's son - but he doesn't deserve to be the sole exclusion either.
As for why the UK has the lower-than-average criminal age of 10 - doesn't everyone remember why? Because of the Bulger case - it was lowered specifically to deal with them.