In what way the QA is different because it's a tag instead of a tarball ?
I don't understand your reasoning. In both cases, you must make sure
that what you are packaging is buildable, tested, QA, etc.
I think the idea is that, if you prepare a release and find some last-minute critical bug (say, in the build process), you'll definitely upload a fixed release tarball, because that's what people are installing from. But you might have already tagged it, and you might forget to move the tag to the fixed version.
Of course, in projects where the git tag is the release, it makes no difference. But lots of projects still do tag a release and upload separate release tarballs (say, to PyPI).