@eaglecat: If you want visibility modifiers and static typing then ask for those two features. Asking for C# because of those features is like uninstalling your virus scanner because you don't like its icon.
Of all the languages I know C# is most overloaded with features and paradigms. No matter what you do in C# there's always at least two different ways of doing it. This leads to less readable code which in turn leads to people posting magic code so you can "solve" your problems by copy-pasting.
I assume you are actually asking for visibility modifiers, because Godot is already better at enforcing encapsulation than Unity for example, which can easily be used in a very procedural way (which is very common in tutorials or code snippets you see on the internet).
One of the main strengths I see in Godot is the clean code base. The downloads are tiny and building it yourself is really easy.
The separation between GDScript and C++ is also very clean. If you need a more powerful language, e.g. so you can access new libraries, then it's easy enough to write new C++ modules. If you don't need that power you should be thankful for not having it, because if you intend to write good code every option is a decision you have to make.
Imho supporting Haxe would be a much better choice. That language has three visibility modifiers (unlike C# which has 5) and is type safe using type inference, i.e. it's type safe but you can still use "var" in almost every place, as long as the type of the variable is recognizable at some point. But unlike C# it has a much more restricted feature set.
But the main issue I see is that it's probably not a good idea to introduce a general purpose language as an in-editor language. GDScript is a DSL (domain specific language), and that is what makes it so powerful. For example it doesn't support static members, which may seem weird since it supports static methods, but that facilitates multithreading because it's much easier to tell which methods access the same nodes. I have to admit that I haven't looked into the corresponding engine code yet, but that's how the decision is justified, and that's the kind of decision you can actually make with a DSL.
The result is that "the way to do it in GDScript" and "the way to do it in Godot" become the same thing. The language can facilitate the right way and make the wrong way less visible. In Unity there's a huge difference between "the way to do it in C#" and "the way to do it in Unity", because some things are just implemented in a way that is not really natural to C#.