This seems solvable. As a rider, you have the option to select "This car is too dirty to ride" or "This car needs cleaning."
If you indicate it is too dirty to ride, the car reports for cleaning. If the cleaners agree with your assessment then your ride is free, paid for by the person responsible for the mess, who would also pay for the cleaning. If the cleaners don't agree, then you pay for the cleaning and your own ride. If you indicate that the car is dirty but want to ride it regardless, then the car could just check in for cleaning after your ride at no expense to you.
If you don't want to send the car away, perhaps you have an urgent appointment, you could just ride the messy car and have it cleaned after your ride. If adding a few extra minutes to your trip isn't a big deal, then the reward of having it be free may compensate you for the inconvenience.
A system like this would provide an incentive for customers to report dirty cars (saving money on their ride) and to leave cars clean (avoid paying for car cleaning). Those incentives are hopefully at least as strong as the incentives in place now.