As stated in Style Guidelines, all state variables should be private, and I'm wondering what's the benefit of doing this?
Well, for one, your users don't get to see a bunch of "uninteresting" functions when they view your contract on Etherscan.
More generally, you want to expose (as getter functions) only the variables that you actually intend for your clients to use.
Exposing any other variable will just confuse them.
Although a truly private variable does not exist on a blockchain, that is all state variables can be accessed by some proper tools and methods, it is generally considered a good practice to ensure a design with higher security than one that is more exposed.
The link in the post is wrong, should be https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/GUIDELINES.md