At the eamug meeting last night it was briefly mentioned about having all methods public for testing (which I totally agree with) but can make consuming a class/api harder to use as everything is public. This is not usually the desired case, especially when building an API.
A lot of my applications are re-useable libraries. The way I keep it simple for my consumer is to have all the methods they will need in one namespace or assembly and then all the supporting classes and methods in other namespaces. This keeps things easy to consume and easy to test.