everything boils down to cost vs. benefit analysis. Each bug fix has some cost value associated with it (man hours to fix, risk of making more code changes X days before release...). At the same time, each bug fix clearly brings additional value in terms of more features, usability, etc.
So this the question every development team faces when making a release: 1) is Bug #i is worth fixing given the cost and additional value and 2) repeat for all open bugs from i = 0 to N.
Keep in mind that a software product that is not released has NO value to anyone. Software product that has 200 outstanding bugs but has 90% of its functionality working, has value to all the people who are happy with what works at the time of the release.
I've never in any company on any product that was released with 0 bugs and I think that's perfectly normal. At some point, you just cut your losses and capitalize on what works. Otherwise, you'll never release anything.