We have recently made some changes in our Visual Studio tooling so new classes are marked as internal by default. Some of you have already seen this, while others will have to wait until it gets to final release through our delivery process.
The reason we did this is probably obvious: Most classes really should be internal (i.e., only be consumable within the package they are defined) because if a class is public (which is still the case if no other modifier is provided) it is almost impossible to make changes to that class later, since, over time, there is a risk that others have taken dependencies on it. Developers should be very particular about what you allow people to take dependencies on; you want to protect your implementation details and be mindful of your contract with consumers of your code artifacts. This is just good software engineering practice.
Even before this change, methods added by the Visual Studio tooling are made private by default, for exactly the same reason. And, by the way, the tooling for C# does the same thing, both for classes and methods.
Just to hammer home the message: We added the internal keyword as a default because then you don't have to. You are free to remove the internal keyword if you need to make your class public.
*This post is locked for comments