I argue it has a hidden gambling aspect with raids. Most of the desirable pokemon comes from raids, and of course you want desirable stats. There are about 3 levels of gambling here that get people hooked in:
1. Catching the pokemon at all. There is only a probability with each throw that the ball catches the pokemon 2. Getting good stats. It's easy to get mediocre stats from the raid pokemon, which are randomly generated and not known unitl catch time. 3. Getting a shiny. It's something like a 5% chance from a raid that the pokemon will be shiny. And of course you don't know until after you spend your raid pass.
Niantic gives you only 1 free raid pass a day, so in order to get more chances at shinies and good stat pokemon you need to spend money.