C# does fit many needs and molds and could be used as general purpose language of instruction. However decisions are seldom made on how 'good' a language is.
Java, C++ have plenty of free, multi-platform tooling and resources. C# requires lots of (hard to get or costly) Microsoft products and tooling like Visual Studio.
C/C++ has the additionally advantage that students are exposed to memory management issues.
Not to mention that C/C++ and Java are the top 3 languages on the KIOBE index and have been for the last decade. C# is newer than all three has risen in popularity over the last decade.
Matlab is much higher level language, usually targeted at (non computer) engineering disciplines because its is easier to learn, and provides lots of tools and libraries for simulation/computation/statistics.