I always tip in cash. Here's why:
I worked in food retail on and off over the years - FOH and BOH. In my experience, at the end of each shift, the waiter cashes out the tips and goes home. Then, once a month, the owner gets a bill from the credit card processor with a merchant service fee (5 or 6%) on all credit card sales including the tips. So, the tips go in the waiters' pockets (right where they belong), but the owner has to pay a fee on the tips. That's thousands of dollars a year in fees on tips to the staff. Some restaurants try to deduct the fee from the waiters' paychecks but that's illegal in a lot of places. And some restaurants (like Lexington Candy Shop in NYC) don't allow credit card tipping.
So, I definitely understand why the restaurants don't like credit card tipping - it's very expensive and doesn't bulk out the bottom line. And most restaurants have such slim margins that a few thousand bucks a year can make or break a small business. I'm not talking about Olive Garden (I don't care about them), I'm talking about the corner pizza shop etc.
If the banks ever stop charging fees on tips (an easy solution) then I might change my mind. Till then, I tip in cash whenever I can.
(BTW: I won't get into the tax implications of cash tips, or the argument that many people tip more when paying by credit card etc. That's beyond the scope of this discussion I think.)