I'm not sure how packages impact the scope of main. Sure, it can have package scope, but that wouldn't lead to runtime errors (in fact, as the OP pointed out, the requirement that main be public is relatively new to the language). His question is, why did Java make the switch?
His question was later about java switch, but the actual question is why if not provided any access modifier to main() generates run time error?
And i guess yes, package scope matters alot. If we can say that it is specified in the JVM, so this can be the one of the reasons, (not very sure but still makes sense).