Oi Luciano!
A conversão é feita de número para string porque a conversão implícita feita com == segue algumas regras, e essa de converter para string é uma delas.
É possível "forçar" a comparação/conversão das seguintes formas:
- Entre strings:  
`${a}` == `${b}`
 - Entre números: 
+a == +b
 - Entre booleanos: 
!a == !b
 
Porém, como sempre frisamos, o melhor mesmo é sempre usar === (o operador de equidade profunda) em conjunto com um método de conversão explícita, como Number(), que evitará esse tipo de problema com conversões implícitas.
Para mais informações você pode consultar a documentação do MDN sobre o operador de equalidade "rasa" (ou seja, ==) e também conferir a especificação do TC-39 para as comparações.
Espero ter ajudado!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!