As a personal example, I once stayed at a place that charged a $150 cleaning fee, but also required dishes + taking the trash out and down the street, which wasn't known until we opened the door. And of course there was a threat that failure to do so would incur a fee. Also a bit of ceiling plaster fell on my wife during the night. Still had a fantastic rating because it was a castle and I'd stay there again if someone else paid.
[edit] I checked and they changed this in April of 2025, as of then the fee is rolled up in the advertised rate.
The more often you wash linen then the faster it wears out and needs to be replaced.
While he has a cleaner who daily makes the bed and does basic cleaning (labour is far more affordable in South Africa), on checkout rooms need a more proper clean with additional use of a cleaning detergents.
Without a cleaning fee which is charged per stay, you'd have to increase the per night fee to cater for single night guests.
With the cleaning fee he can still keep per night rates as low as possible with single night guests still covering their actual overheads.