É uma boa pergunta. A razão é essencialmente histórica; diferentes grupos com diferentes objetivos e prioridades adicionaram peças do Unix ao longo do tempo, e as diferenças entre várias APIs são um reflexo dessa história. Eu acho que o conceito de arquivo de dispositivo original remonta ao Bell Labs, enquanto soquetes de rede foram adicionados mais tarde na UC Berkeley. Bell estava tentando criar um bom paradigma de manutenção limpa para as operações da AT & T, enquanto Berkeley precisava adicionar recursos de internet que não se encaixassem facilmente nesse paradigma. Tecnicamente, seria possível voltar e criar um arquivo /dev/eth0
hoje (veja abaixo), mas isso envolveria reescrever uma quantidade proibitiva de código legado.
Ligeira OT: Se o assunto lhe interessar, considere dar uma olhada no Plan 9, que levou "tudo é um arquivo" para extremos maiores (só não espere que ele tenha muitos aplicativos modernos e úteis):
muitas facilidades que sob Unix são acessadas através de várias interfaces ad-hoc como sockets BSD, fcntl (2) e ioctl (2) estão no Plan 9 acessadas através de operações comuns de leitura e gravação em arquivos especiais análogos a arquivos de dispositivos