If he is a regular, and values you, he will understand when you mention to him - tbf, I think there has been some miscommunication if it wasnt specified that he would get an extra hour ON TOP of the 4 hour fee. He has assumed a discount on the 4 hour booking. It can happen if things aren't clearly detailed.
HOWEVER, since he mentioned absolutely nothing at the time when he realised he had been there for 5 hours, and only paid for 3, then he's a cunt.
Here's what I would do - highlight the discrepancy when he contacts you for another booking and tell him you want the extra hour payment from before. If he pays, then keep seeing him but set the boundaries in terms of constant comms and other things that have managed to become flexible to him. Or, see him that last time to get your extra hour payment then don't see him again. Just say you are limiting all bookings to 1 or 2 hours.
If he doesnt want to pay for the extra, then cut your losses and leave it at that.
Either way is a win win in my opinion.