And between 0 and that many users you could have all sorts of other reasons for rethinking your authentication architecture, nevermind whether home grown or third-party library.
1. This is a blocking issue now.
2. This is not a block issue now, but postponing will cause more pain than we would save by not doing it now.
3. This is not a blocking issue and doesn't create future pain.
The third bucket are natural to postpone. Finding the balance between the first two is one of the primary challenges of engineering.
I believe the point of GP was to say "use an auth framework". If you're rolling your own auth, then your approach is fine.
Then you'll have password recovery, 2FA, sign in with FB/Goog/LinkedIn etc., loads of insightful management screens and even SAML support for enterprise SSO - all free, out of the box, battle-hardened and already in wide use with many eyes on it for security.
Then when your customer waves some IT checklist in front of you asking you "do you support blah blah password complexity" the answer is just YES.
The TFA has a solid point, but has picked a bad example to illustrate it. These days if you find yourself even thinking about building your own password recovery, even way off in the future, you should really reexamine your core decisions.
Later on you might realize that you've bound your user ID to email and that you need to use UUID, where email is just a contact address.
You might even want to have users have multiple accounts that use the same email address.
You might decide to bind the user's account to their phone number instead.
It's not about One True Strategy, but about looking further into what you will need in the future. You might decide not to develop something right away, but you can avoid much refactoring later by making a smart decision now that did not involve any more work than the less smart decision.
People who think their problems are small or simple write their own libraries, and then every change in requirements gets incorporated into the library or blamed on the victim. By the time the system is profitable you've reimplemented half of a robust library, badly.