Back in the old days, when a game released, there was no reason not to buy it, except “I don’t like it” and “I don’t have enough money”. These days, there is a third reason - “It is not finished yet”.
Game patches have been with us for a long time now. They used to be just minor bug fixes and balance changes, but over the years they have grown In size. They fix more bugs and change more things which means the games are released with more bugs and less polish. Whether it is because developers got sloppy or games got more complex, doesn’t matter. The cutting floor is also no longer an inescapable void. Features, that did not make it, can be picked up, dusted off and sold as DLC. Overall, while there is nothing stopping you from buying a game on release, you will probably want to wait up to a year before actually playing it.
However, situation is a bit different when we talk about multiplayer. While all that was said above still applies, the best time to play a multiplayer game is arguably on release. At that time you get larger player base and nobody yet knows the best way of playing it, which means you will have more fun. Still, is you go in early, you might burn yourself out on an inferior version of the game, compared to the one after a year of improvements.
The most extreme example of this is Early Access. We no longer talk about games released in their beta stage, when the features are done but they just may not work correctly. Now we talk as soon as pre-alpha, which means missing even some core features. You can still buy it and wait for it to be finished, but you run into a risk of the game changing so much that you no longer like it. But it is still better than Kickstarter, because you will always get at least something.
Unfortunately, we can’t predict when the game is going to be in its best form, so for singleplayer games, I would recommend to buy whenever but wait before playing it, and for multiplayer, to hop in as soon as you want. You can always take a break and just watch the changelog, if it turns out to be too raw for you.