If your BF says this guy is his only friend but he also doesn't like hanging around with slacker man-boy, then what does it say about your BF when he doesn't make an effort to make any other friends?
Somebody has to change this situation. That is, if you don't feel like biting your tongue and taking it anymore.
If slacker man-boy changes, if he grows up, showers, stops whining, and finds other people to hang out with, that would be ideal, yes? But the chances of that are pretty damned slim. Despite how much he bitches, he likes his life.
If your BF kicks slacker man-boy to the curb, then their friendship will end, most likely. You do not want to be the person who gets blamed for that. But whether that happens or not, it sounds like your BF is withdrawn and potentially a tad depressed at best. Certainly unambitious and inert (as is the slacker man-boy).
Then that leaves you. Here's an idea. How about addressing one of the elephants in the room, which is that your BF thinks this is the only guy he can hang with? That is, you've got friends, yes? They don't have to be people who smoke, BTW. Arrange an outing. Something fun. Hit the movies together, or a concert or a ball game (it can be super-cheap local stuff). Host a potluck. Have a tabletop game night.
See where I'm going with this? Your friends are either men or they are women who know men. Maybe someone will click. But even if they don't, even if your BF doesn't become best pals with anyone you know, he can at least start to see that there are more people out there, and there is more to life, than lying, thieving, stinky slacker man-boy.