Making class internal
by default makes perfect sense to me: keep your privates to yourself and only explicitly expose parts which really need to be exposed: everything else is just implementation details and should not be visible to the outside world.
In case you want to test your internal
classes, .NET 2.0 onwards introduces a new attribute called InternalsVisibleToAttribute, which
Specifies that types that are ordinarily visible only within the current assembly are visible to another assembly.
If this really annoys you, see %ProgramFiles%\Microsoft Visual Studio 8\Common7 IDE\ItemTemplates\CSharp\1033\Class.zip
. This is a template which you can change to suit your needs. ReSharper has similar capability, but it's directly accessible from within th UI.