Aside from all the obvious issues of having no distinction between transitive and direct dependencies, it completely breaks cross-platform support if any of your dependencies have platform-specific sub-dependencies (which is not uncommon in python).
pip freeze was an overly simplified hyperbolic jest...
fair point, so when this packaging mess happens, can one not strike a balance, and define the dependencies that you need, then, and let the resolver handle the rest?
I prefer my requirements.txt to include only the packages I install with pip myself (and not their dependencies).