There are really reasons to announce a little earlier. Depending on how you do it, this can be a great way to start a dialogue with the fans, to find out together what the game is supposed to be. That is often linked to Early Access, but in my view it does not always have to be. Kerbal Space Program itself is a great example of what a developer can achieve in dialogue with the fans. Subnautica is another game that has been largely transformed from the developer’s original idea to something much better.
There are different ways of developing, and in the end the developers have to choose how they approach it. Announcing things at the last minute is also no guarantee of success. Fallout 76 was announced very last minute, but that game was just broke. Or you have a game like Evolve, which also had a very short marketing campaign, but because of that a lot of people just didn’t know it. Evolve flopped despite being a game that was actually very well put together. There were of course other factors, but building a little longer towards the release certainly wouldn’t have hurt.
Conclusion: if there was a magic way that is best, we would have found it already. As a consumer you just have to stick to the golden rule of thumb: no preorders. And furthermore: buy the game with the expectation that you will get what it is now. Promises about the future should be completely ignored.