I'm not sure about others, but the reason my main tree is private is that it contains a ton of information I got from other trees which hasn't been verified. I do this because it is a convenient way to keep track things as opposed to trying to save links to all the trees that have information of interest. In the short time I've been doing this, I've found lots of incorrect information – not just simple things like spelling and dates, but critical information like the wrong parents which leads you down a whole wrong path. I did not want to contribute to propagating that information and wasting other people's time.
Once my DNA tests came in, I immediately got requests to look at my tree and realized the issue with private trees when it comes to DNA matching. What I ended up doing was to create a separate public tree without any of the questionable data. It’s kind of a hassle, but it solves the problem.