I was in the place of the person described above (or at least, to some degree), and from my perspective, if they work with clients well, then their behavior comes from the good place of caring about the product and customers, but they seem to be overly demanding of their teammates and themselves.

That's why they resented other's success -- they see flaws in others work, and being overly demanding to other people, it seems to them, that those people are not worth of being successful. Also being demanding of themselves makes compliments look not genuine, because they "know" that they are not good enough (in their eyes).

There is also a stress factor, if there were overtimes, or the project is highly demanding (something to do with money, or health, for example), it can be stressful, and multiply that stress by their lack of confidence (because of high demands they put on themselves), and you can get a very stressed out person on the edge of paranoia, therefore some mistakes are found to be acts of war (coz, you know, if you cared about the product at least to some extent, you would have found it, but since you didn't, you either didn't care, so you are the enemy, or you made it because you are the enemy with ulterior motives and it was a diversion, not because you are a human being and make mistakes sometimes).

Also, when they are getting abusive, outline bounds right away! Tell them, that their feedback is more than welcome, but their tone/language does not need to be hurtful, because it actually takes the focus away from the issue they care about, and if they want it addressed, it's their job to keep other's focus on it. BTW, most likely, they have already came up with valid problems, but because of the problematic communication style, they couldn't make other people care about it or even understand it, since no one cared or understood it, or even worse -- said they did, but there were no resolution or even an attempt to resolve, then once again -- "it's all idiots or enemies around with their laziness/stupidity/diversions!". Yes, they got into this vicious circle themselves and don't know about that, but you are in it now, so it's your job to escape it too.

For me, some quality vacation helped, less regular meetings, more written communication unless really necessary (because, it's easier to manage anger over the text, but easier to converse emotion and intent over the call, plus make those calls up to 2-3 persons, since on a meeting of 4 persons, one of them is not paying attention, and we don't want to make our friends think that we brought an idiot or an enemy to the meeting, you know), more casual conversations with teammates, where you don't bring up work at all (drinking beer over Jitsi/Zoom works too!).

Also, I tend to be very accepting on work challenges, so it's not like I would say no to something I don't like, if it needs to be done. I'll do it, even though I probably wont be happy about it, so don't believe that me or such stressed caring person will see your offer to agree or disagree to do something as a genuine offer instead of polite way to demand it to be done.

You may think they would love to do it (even more, they probably brought up existence of the issue to you themselves!), but it's not necessary, that they won't get under even more stress. Instead, try to make lots of small fully defined tasks (don't make them do it, they'll overthink it and there is more stress again, and more problems), put them into backlog, and ask such person to pick which tasks to do themselves. If you see, that they are overthinking/overworking some other tasks instead, make them do those small tasks, at least few a week, small successes help them to overcome stress, see progress, and are unlikely to be scrutinized on code review or QA.

I hope, someone can make TL;DR of this if it makes sense, I'm too tired today.
But leaving my long time job soon, where I was working on the project for some years, was this kind of person for some time, and also wasn't, seen a few rotations of the team, multiple managers, and I can definitely tell, that it is a manageable problem, even if not by the ways I tell here. Few good managers worked with me and little by little I've become a better teammate. I still let that side of myself show up sometime in a managed way, when I see someone is cutting corners, and does not listen to reason repeatedly, but anyways, I've heard enough of good feedback, and even raised few other developers to a new level since those times.