Olhando para as diferenças de firmware do dispositivo versus driver, não vejo por que tecnicamente precisamos da distinção. Eu entendo que o firmware não é fácil de mudar, que assume a operação de dispositivo de baixo nível enquanto os drivers estão lá para se comunicar com o sistema operacional host.
A questão é: por que não podemos simplesmente recolher essas duas camadas em uma só? Apenas um driver que sabe como se comunicar com o sistema operacional e traduz todas as solicitações diretamente para operações de dispositivo de baixo nível. É para facilitar o desenvolvimento (ou seja, reduzir o conhecimento do desenvolvedor necessário para desenvolver este software)? Não é possível se comunicar com o dispositivo usando um software que não reside em sua memória flash?