Yeah I know all this, you can even use BaGet[1] symbol server to cache or manage private dependencies in an enterprise network. That is not the point... I think that the most used tool / platform should provide more flexibility for non-enterprise or less expierienced developers.
No offense, I like nuget, but I recently made a typo and checked in 0.0.23 instead of 0.0.2. Now, everytime I add a dependency that is < 0.0.23 to a project, that has not been synchronized / validated yet (the other problem I described), it automatically takes the best match, which is 0.0.23 assuming to be the newest package, even if unlisted.
I also burned a 1.0.0 because of a failing script like that... not really bad, but annoying...
It's to avoid the npm left-pad problem. nuget.org packages are idempotent.
For the publish times, I found out you can cut it in more than half if you tell nuget to ignore caches.