This is something that I'm very much on the fence about it.
It's wrong for the staff not to be paid for their services.
It's wrong for the businesses to give someone a bill with the wrong amount ( ie give a bill, and expect the customer to pay 15-20% extra ).
It's wrong for the businesses not to pay their staff a fair salary for the work they do, but that should not be used an excuse to try and guilt-trip customers into tipping. It should be used to guilt-trip businesses into properly paying their staff. Anything the customer chooses to pay then of their own free will, should then be an extra.