Edited for actual answer, not a ramble
I think there's only two ways out of this, a confrontation around an event (or set of events), or working out with your friends for ways around this.
It's not the hardest thing to ask "Will be at the event? You can probably guess I'm not a huge fan of them." This also gives an opportunity to open up a discussion between you and the organizer about how you feel. It may turn out well, in that others share your opinions, but you've let your opinion be known regardless.
You could also cut short your appearances when that person is around and leave (could include snark for extra dramatic effect - see ramble below). It would become obvious after a while that both of you don't tend to appear at the same time, but this could also start a rift.
I'm reminded of certain public figures and relatives who try to crush your hand in a handshake - there's no point to this, except to show they're a real prick. This person seems like one of those people.
Eddie Izzard on "Hand Squeezy Death"
And some people do one of those squeezy handshakes, the small-dick crusher squeezy handshakes, the compensation handshake....they go into this and you don't react. You should react, because they get away with it, if someone starts crushing your hand, go "ahhhh! fucking hell! You bastard! I hope you die in a car crash!" Or do the complete opposite, and collapse on the floor - "You killed him, man. He suffers from Hand Squeezy Death!"
My take on this is sarcasm, pure, undiluted sarcasm. The cynical side of me says point out your disgust:
Usual comments are like "wow you have really gotten fat"
"Good point, what is it like then to be only able to buy shitty food? How good is nice food! All the chocolate all the time!"
"you're useless and should go kill yourself"
"OK, do you want to make the noose while I get the chair? What's your favourite way of assisted suicide?"
Mind you, this would be a really, really quick way of getting into a fight as well. Also it would be an easy way to split your group and lose friends as well.