When does it make sense to post a new package to the Julia repository?

To be registered, it should be at a “minimum viable package” stage (which is what a v0.1 release typically indicates). This means it should have some non-trivial functionality. It also should have some tests, and very importantly, some form of documentation. This doesn’t mean that a package needs a full Documenter-based website: for simple or early-stage packages, putting the documentation in the README if usually sufficient. It should include a description of what the purpose of the package is, and a basic usage example. Without any such documentation, the package would not be usable for a general audience, which is a prerequisite for registration.

I would definitely encourage you to register before you submit a paper (or even preprint) about your package. This ensures especially that there are no problems with the package name. It has happened more than once that someone tried to register with a package name that doesn’t meet the guidelines, and then had to argue for an exception based on “we already published a paper with this name”. That’s a situation you should absolutely avoid.

If the package is not yet ready for a public v0.1 release, but you want to avoid issues with "Expected <package> to be registered", I would very much recommend a LocalRegistry. If you develop multiple unregistered packages that depend on each other, putting them in a LocalRegistery is almost unavoidable.

You definitely don’t need to wait until your package has reached v1.0-level maturity, where all the functionality has been implemented and is fully documented. Most packages are still “work in progress”.