I've played it both ways; and having done so, I won't play letting Roche kill Henselt again.
Henselt himself is beyond pardon. His crimes have been enumerated and don't require repetition. If anyone deserves to die, he does. There are three reasons I can think of why he should not, but only one of those is telling.
There is the argument that it is always wrong to murder a king. I don't buy it. Its support is in the anachronistic concept of the divine right of kings. Quite the contrary: the duty of the people to oust a tyrant by all necessary force has been current IRL at least since Cicero (De Officiis, which is also the source of the very relevant notion of "lesser evil").
There is the argument that it is undesirable, in general and especially at present, to remove a strong war leader and plunge yet a third Northern Kingdom into anarchy. That would have carried more weight if Henselt were not already in bed with Nilfgaard. Far from ousting a strong and valuable leader, killing Henselt is the punishment due a traitor, the same punishment he exacted from Sabrina.
Divine right and global politics are lost on Geralt anyway. Geralt's loyalty is to his friends, even including Roche, and he knows Roche is a hothead who would do something he would end up regretting. He's been through this with Roche time and again. He knows Roche should not kill Henselt, because Roche will be hurt by his own guilty knowledge (maybe even to the point of losing confidence in his own ability to command). So he does what he's done for his friend before, talking Roche out of a rash and self-destructive act.
"But many a king on a first-class throne,
If he wants to call his crown his own,
Must somehow manage to get through
More dirty work than ever I do."
[Gilbert and Sullivan, The Pirate King's Song]