This will slowly drive you mad OP. You're not stupid, you're being kind and thinking there must be a reason why he's like it and you can educate him to change.
Unfortunately, having been there, you can't because he doesn't think the way you do. He wants to live a life of self indulgence. He knows what he should be doing as an adult, but he has decided to opt out. He won't suddenly change that mindset because why should he? You pay for everything.
In the end I said to my ex he could be sahd but he couldn't be arsed to do that either and my dd was palmed off on any available grandparent. He didn't do the housework either. Sah parents are usually agreed upon by the couple before it happens. you aren't parents yet and he's decided to pay for nothing before the baby even appears. What about your mat leave? I had a month and had to go back to work when my dd was a couple of weeks old, because we basically had no money and he was not going to provide. Will the same happen to you? It was heartbreaking for me.
It made me feel used and abused. He was nasty if I didn't provide things, would steal my money if I hid it. In the end I realised it was a form of financial abuse. Cocklodging is an amusing term, but unrealistic. There is no good sex in such an unequal relationship.
I would say it was financial abuse. Especially if he has a go if you don't buy him fags/pay for petrol. He is being nasty to get you to pay for everything. This says a lot about his basic personality. Would you ever do that to him? No. Because you are fundamentally different - kind and giving - whereas he is a taker. He has made his choice to be this way, and his mum/you are enabling it.
I would give him an ultimatum. Pay half of the bills or go. If he decides to leave, it proves he doesn't want to give. Simple as that.