Y'a une explication assez simple que j'ai lue à ce sujet y'a pas très longtemps, et si je devais résumer, c'est plus ou moins cela que j'ai retenu :
• Tout le monde connait le JavaScript. Ça fait un peu echo avec toutes les raisons possible, mais il faut voir la quantité d'implications que ça a. (Quantité/qualité du support, facilité de trouver des réponses/exemples sur Google, facilité de trouver des développeurs « qualifiés », …)
• Quelle que soit la merde avec laquelle tu code, ça ne te dispense pas de connaître le JavaScript (faut bien savoir déboguer)
• Si tu publies un projet web avec un langage autre que JavaScript, tu imposes ta merde aux autres, et ça peut être un grave frein au développement: Tu imposes aux autres de maîtriser les tenants et aboutissants de ta techno en plus de la leur, et y'a de grandes chances que ça te fasse perdre de potentiels contributeurs qui n'ont pas autant de temps à perdre que toi.
• Ta technologie « supérieure » est pas forcément meilleure ou plus simple que JavaScript
• Comme tout le monde fait du JavaScript, c'est juste plus simple de faire également du JavaScript
(C'est sans doute plus ou moins adapté à ma vision des choses. Mais de fait, je suis totalement d'accord avec ce que je viens d'écrire

)
Maintenant, je n'ai pas « sérieusement » été confronté au problème (genre incité à faire un choix), mais j'ai déjà été voir ce qui se fait ailleurs, donc voilà mes raisons perso :
• Je connais suffisamment JavaScript (rapport aux pièges / trucs qui fonctionnenet mal, etc.) pour me démerder. C'est pas une raison en soi mais un prérequis à tout le reste

• J'utilise exclusivement des librairies JavaScript, qui ont été conçues exclusivement pour le JavaScript (i.e. son modèle objet), et non je ne sais quel autre langage plus ou moins proche
• Quel que soit la technologie autre, cela nécessitera de mettre en place un workflow de compilation à la noix avec conversion automatique des fichiers au build, et ça te fait un outil en plus à gérer dans ta chaîne. Perso, étant un gros connard de fainéant, si ça marche pas tout seul, ça dégage, et je ne me pose pas de questions. (À noter ici l'avantage si l'on bosse avec Visual Studio, le process de build est facilement extensible, donc il existe à priori déjà des Task MSBuild pour gérer ces merdes à nos places)
• Hmm… Comment dire… Je… n'ai pas de besoin ?
• Un nouveau truc à apprendre ? Ok mais pour quoi faire ? cf. point précédent
• Si ça me fait chier de coder X en JavaScript, je vois difficilement comment ça serait moins le cas avec un langage Y compilé en JavaScript

• JavaScript est déjà là, et y'a rien à faire pour que ça marche
Bref, honnêtement, je dirais que ça n'en vaut pas la peine : Cost >> Benefit.
Sérieusement, faudrait quand même vraiment être atteint pour contester que JavaScript soit un langage de merde. Mais en même temps, faut lui reconnaître ses qualités. Le langage, en tant que lui même (donc en excluant toutes ces questions de DOM et autres choses liées au navigateur), permet d'écrire du code très rapidement, dès que l'on l'a pris en main. On peut créer des structures objet avec une facilité déconcertante. La nature « pâte à modeler du langage » fait que tu peux faire pratiquement tout ce que tu veux avec (hors étendre le langage lui-même, il s'entend…), d'où la foison de frameworks Web JavaScript qui existent.
Maintenant voilà, c'est un cauchemard à déboguer, parce que l’absence de typage statique permet de faire passer n'importe quoi comme du code valide, parce que les conversions implicites provoquent des scénarios tordus, parce que tu as du mal à visualiser à quelle variable exactement tu accèdes… C'est exactement pour ça que c'est un langage de merde. Mais on ne va pas magiquement résoudre les problèmes de débogage en utilisant un autre langage par dessus. En général, en empilant des technos, on a plutôt tendance à ajouter des problèmes qu'à en retirer.