Our wash remote system lets up handle each transaction and refund the exact way we want. If I catch the transaction before it's batched, I can edit each transaction before the pre auth changes on their card. If I don't catch it in time, I can still change each transaction into whatever amount I want.
Personally, I like to be as flexible as possible for people, and I treat each instance on a case by case basis. The majority of the time, no one bothers to call about the 15 dollar charge on their card. If they do, I will review the transaction on film to have as much "ammo" as possible when I call them back. As mentioned, sometimes someone came in behind them and used the remainder of the time to wash their own car. And I make sure to mention this to them. Either way, I explain the situation so that they know how to use it properly in the future, and usually offer to refund half of it, as kind of a compromise to them.
In my experience, eating a few dollars every once in a while when a customer makes a mistake pays off in the long run.