Тут есть очень простое объяснение:
1) Это Unity, которая сильно снижает планку зп по рынку.
2) Студенты. Майкрософт хорошо лоббирует .net в универах, поэтому большая часть студентов (которые готовы работать за еду), идут со знанием .net
3) В США большая часть .net работы — это компании в области гос/финтех-сектора. У нас же по историческим причинам, в этом секторе основной игрок Java. Следовательно и деньги в .net не идут.
4) .Net — дорогой стек, поэтому все стартапы, которые вынуждены большой зп конкурировать с более «стабильными» компаниями за разработчиков, выбирают python/java/php, а не .net. Хостинг на .net — крайне разорителен (сейчас, конечно, появился .net core — но он еще слишком молод, чтобы поменять ситуацию).
5) .net часто используется во всяких тендерных проектах, где руководство использует принцип «совка». Разработчик должен быть голодным и «уставшим».
___
Другими словами — специфика рынка использования .net (весьма ограниченный сектор использования в реальных проектах), плюс большой поток желающих, кто готов работать за еду.
Реально открываешь вакансии, там middle .net разраб — 90-120к тысяч. Хотя проекты такой же сложности на Java — идут уже 120-150к. В общем, так сложилось, что .net платят меньше, и работодатели не шибко хотят поднимать эту планку.