questa è una cosa che pochi alle prime armi capiscono (e l'idea della Gecko (mi sembra) di fare il casting automatico non aiuta certo l'apprendimento degli strumenti di sviluppo...):

Tutto, ma proprio tutto, il HTML è testo, stringa, char o come volete chiamarlo. Quando in una input text inserite 123 in realtà avete inserito '123'. Stessa cosa con le option, il value è un testo, anche se vi inserisci dei numeri, lui, il JS runtime, li vede come una stringa.

Proprio per evitare di dover fare casting ogni volta molti browser hanno creato l'if che fa automaticamente il casting (cioè sto valutando se un numero ed una stringa sono uguali, tratta il numero come una stringa e siamo a posto, bisogna considerare che javascript, sebbene basi la propria sintassi su Java, è molto diverso il suo interprete, ma questo è un altro discorso). Explorer da bravo prodotto Microsoft, non accetta questa condizione (casting implicito) come non implementa una marea di cose come fanno tutti gli altri.
In generale, mi vedete contro IE con tutte le mie forze, ma, in questo caso, do ragione a lui: un Number è diverso da un String e non sono comparabili, anche perché se volessi trasformare un numero in una stirnga dovrei convertire da ASCII a Char e vice versa non fare 123 > '123', in questo caso dovrei avere '{'.

Più che giusto quindi che venga lanciata una Exception e non un casting implicito.