Margot - He sounds quite immature - some young people assume that anyone older is quite well off and can afford to pay for everything! At home, he possibly never had to pay for anything if out with parents etc, and regards you as substitute parent.
I wonder if this trip was really his own idea, or if his friends were all going off to see the world, so he thought he should too?
When I was around the same age, I went travelling around the US and Canada on Greyhound buses with a friend. We planned it all very well, looking at places we had connections with people, and wrote to them all beforehand (long pre-internet!), asking if we could stay a couple of nights. 2 nights max, apart from a few places with closer relatives where we stayed 4 or 5 nights. We brought small gifts from home and expressed our appreciation, writing to thank afterwards. Our visits seemed to go well and we showed interest in whatever our hosts offered to show us.
However, one thing stuck with me, when we visited a family in Denver. We were saying the usual - "we hope to be able to repay your hospitality some time", when our host said rather bluntly (but truthfully!) - "it's unlikely you will be able to repay us, but do it for someone else when you get a chance". The phrase "pay it forward" wasn't in use back then, but that's what he was suggesting. I took it to heart, and have tried to give hospitality, even if I know it won't/can't be reciprocated.
I think you might have another chat with him if you get a chance, before he finally leaves, pointing out all you did for him (don't be subtle) and suggesting that he might repay your hospitality to someone else when he's a bit older and can afford to. You'll never know if he takes it in, but it might make you feel better!