Not that I disagree with this point but I'd say the best reason to choose cash would be that you can control who receives it. Give it directly to the person who provided the service you're tipping for, whenever possible.
Exactly! Otherwise you're giving control over the money to someone else, who will use that control to further screw over the already marginalized service worker.