^^^ This.
In the case of the guy in my game, when suspicions first arose we made some adjustments intended to make the suspected behavior stop, or at least much more difficult to achieve, in hopes that the message would be received. The player wasn’t confronted personally, but he clearly understood the message of the group warnings and game changes: We see what you’re doing—knock it off.
So first we tried to address the problem obliquely in the hope of avoiding an uncomfortable confrontation involving someone whose presence and friendship was valued in the group.
It did work, for a time, and for 4-5 sessions the cheat’s results came down to earth.
But this just made us suckers twice over. Eventually he resumed cheating in a revised form, adjusting to the new situation. If anything, he probably thought that getting tacitly busted, and then having several middling/losing sessions, would lull us back into complacency. To a large extent, he was right: He was able to get in another six months or so of cheating before things came to a head again. And then he was banned completely.
Point being: Getting caught but allowed to continue playing, on the assumption that the preferred cheating method has been deterred or thwarted, is not a long-term solution. Cheaters have it in their blood. Finally given the the impossibility of ever being certain he would stop, given that I could not in good faith invite others to play with a cheat, and given the fundamental breach of group trust/friendship that his cheating represented, the only solution was to expel him.
So I don’t fault the OP for how this played out. We are just kind of wired as human beings to avoid believing the worst of friends.