I have had a number of cheaters in my games over the years. They've cheated for several different reasons.
In an official setting, like a tournament or RPGA, I think booting them immediately is appropriate. That's just a no-no. But for a home game, which should be friends, I think you have to take a slightly slower approach.
Rolling all dice out in the open can solve some problems. Unfortunately, it doesn't always do the trick because I've seen people blatantly lie about a die roll that others have seen. (One of the cheaters was rolling where another player could clearly see and just assumed the other player would never say anything. I know because I talked to the player sitting next to the cheater at the end of the session.)
The first real step is talking to the person you suspect of cheating. You need to decide based on their personality and yours whether this should be in person, on the phone, or in an e-mail. This talk should NOT be in front of the whole gaming group, nor in a few moments pulled away where it's obvious to the social group. That would be just backing the cheater into the corner.
Lay out what's going on. "Bob, you're rolling 20s about one time in three all session long. That's just not statistically possible." "Bob, you've been clearly seen rolling low and then claim it's high." "Bob, you used more healing potions last session than I've given out all campaign." (That last one actually happened to me as a GM.)
Give the person a chance. Some people may not know that cheating isn't allowed. One player I had commonly played video games in god mode and didn't think for a moment that fudging their die rolls was any different; it helped them enjoy the game more, so that was okay. (Though not okay with me.)
If the cheating continues and you want to give the person a chance, then it's time to up the response. (You can try a second conversation if you want. Decide based on your own impressions of the first conversation.) I tend to start responding to high rolls or other signs of cheating with, "Really?" I give them a moment each time to think about it. I've never had anyone back down at that point, but I've seen it make them aware that we're all aware of what's going on.
(You can skip the previous paragraph if the person is not a friend, is otherwise someone you're fine with quickly getting rid of, or if the first conversation went very badly.)
Then if it continues, you boot them from the group.
But why do these people cheat? I admit, in some cases I simply don't know. In a lot of the cases I've seen, it's because the person is either emotionally immature or has another factor going on where they just cannot stand the idea of "losing", so they have to cheat. I've also seen someone get their own self worth so wrapped up in the game (mostly because they had nothing else in their life that was giving them any self worth), that any hint of not doing well was more than they could handle.
I've also seen people cheat because they think other people at the table are cheating. (Which can also be caused simply by someone having a better character or playing it better so that it makes the cheater feel less powerful.) Some people also cheat because they think the GM is out to get them and that's their only defense.
And every once in a while, I've seen someone cheat once because they had a string of really bad die rolls and just couldn't stand to have another one go wrong. It's a moment's frustration and not likely to be a regular thing, and I often just ignore it because I recognize that it's a breaking point thing and keeping the "fun" means just looking the other way this once.
Ultimately, I think cheating at the table is something you have to deal with as a GM, if for no other reason than it's going to suck someone else's fun out of the game, probably yours at least. Ignoring it won't make it go away. It's got to be dealt with head on.
As a side note: I do not roll my GM dice out in the open for most games, though all players at the table roll on the table where visible to others. That's because sometimes the dice get in the way of the story. Plus, some of my dice rolls are supposed to be a surprise, like searching for traps.
On the other hand, years ago I had to implement a magic item card system because people were forgetting what they had and because people were playing very fast and loose with the number of healing potions.