It's a basic economic mistake - if I've already paid you for a game, I'm going to get salty if I need to pay you more to effectively play that game. However, if you're letting me play the game effectively, I might very well pay you more to let me play it frivolously.
Tomb Raider has loot boxes. They give you shaders'n'shit. Tomb Raider, however, is single-player. Nobody gets to see your shaders but you. I don't know how many they sell. And, really, Tomb Raider showed up free on Playstation Plus so...
Destiny 1 had loot boxes. You got a goofy freebie when you started playing and you got a goofy freebie whenever there was a special event (Destiny hangs christmas lights - it's hilarious and awesome).
The rest of the time you could buy stuff with special in-game currency wholly separate from the rest of the in-game economy ("silver" vs. "glimmer" where "silver" gets you swag and "glimmer" gets you shit you need). But really, Tess and her Eververse existed largely to scalp you for useless shit. Which is fine, it was useless.
Destiny 2 still has Tess, still has the Eververse, and still has useless shit. But now you get that useless shit at regular progression intervals. Which is nice because you're still capped. It's all useless - she's got armor but it's useless unless you infuse real armor into it, and real armor is only available by trying hard. You can also get useless armor by playing a special PvP arena, which also needs to be infused with real armor. It also looks fucking ridiculous.
Yeah. Your assault-rifle-toting space wizard can look like a Frank Franzetta Conan cover. But you can't even buy that shit - you have to grind it.
Of course, what are the gamers bitching about? The fact that there's a random number generator that determines what useless armor you get as you grind so it's nearly impossible to get a complete set. Granted, they're still grinding.