Unfortunately he’s old enough to sort his own finances out now, you can advise, but that’s about it.
Please start charging him rent, and ensure he is contributing towards bills. You might not need the money but he has to learn that living isn’t free. That bills need to be paid and they have to come before other things and that the natural consequence of spending all your money is being broke and missing out.
if you don’t need the money that’s fine, save it up and use it when he gets his own place to help with deposit/furniture etc
But don’t let me ignore you mentioning it and assume he doesn’t have to pay for things.
My MIL never charged her kids, never made them pitch in around the house and bails her kids out as adults every time they over spend. With the result that all of her children are appalling with money. DH is getting better, but I didn’t find out how terrible he was with money until we married and I literally had to treat him like a child and restrict his access to his own money to ensure our bills got paid.
instead of taking the responsibility away from him
Sit him down
Tell him your expectations of his financial and physical contribution fo you’d household, and that if he doesn’t comply, he can live elsewhere.
let him overspend and then let him miss out on life because of it, it’s literally the only way he will learn and when he’s older both he, and his future partners will thank you.