If I pay in cash and the waiter takes it with them, then either doesn't bring me change at all or brings me change for the wrong amount, exactly what recourse do I really have? If I say I gave him three 20s and the waiter argues that I put down two 20s and a 10, who proves that I'm right?
I had a former waiter confess to me that, if a large party (so, tip was generally included) paid with cash, he'd sometimes pocket a $10 or a $20, walk back to the table and tell them they were short. And these large parties almost ALWAYS blamed themselves because they figured they'd made a mistake, with so many people throwing money into the pot. In order to get out of the embarrassing situation, everyone would cough up money. I was shocked that nobody pushed back.
Ever since then, in these situations, I've counted the money into the waiter's hand, "just to make sure we got it right." I'm sure none of them are as unscrupulous as that guy, but now I'm paranoid.