The thing is, if you buy a single player game for $30-40 you're likely to get 15-20 hours of gameplay out of it, then it goes back on the shelf. Sure most creators try to whack on multiplayer, etc. to improve longevity but let's face it, that doesn't last very long either.
With good online games with loads of bods even if you did pay $30-40 up front you'll end up spending waaaaaay more than 15-20 hours playing it, plus a single-player game doesn't need servers or constant development of content. So, the devs need an additional source of income to keep things rolling.
I'm not a fan of paying for decal/colours/pallets/hanging bits/stupid hats/etc. but I do sometimes feel bad when I've been playing a F2P game for ages and don't dip into my wallet now and again to support the devs