There's quite a bit you can get away with using Unity JS. So much in fact that you might actually have many errors in your code, but they only occur during run-time. This mostly happens when an untyped variable is assigned to a typed variable. For example
This code compiles just fine, but as soon as it's executed during run-time an error will occur. A pretty easy fix as soon as the error pops up. But that's just it. What if you never hit the case where the error occurs? You end up releasing your game with a bug just waiting to happen. And it probably will. Strictly typing your code or using C# will avoid this issue.
This is more of a convenience frustration. If you're using an IDE like MonoDevelop and you're programming with untyped elements of your code, then your IDE won't be able to use some of its convenient features. Looking at the code example above, your IDE would not know to list Vector methods when dealing with variable aVector. Strictly typing your code or using C# will avoid this issue.
Improved Run-Time Performance
You may not ever notice it, but strictly typing your code or using C# will actually make your game faster during run-time. Cool!
Benefits of C#
Compiler Confusion Continued
If you're cautious with your decisions and ensure the compiler can catch as many problems as possible, your development process is going to go much smoother.