Não há diferença; dev é opcional, desde que o nome do dispositivo não possa ser confundido com outra palavra-chave que o comando ip entenda. Por exemplo, se você tivesse uma interface chamada bridge , teria de usar dev , pois bridge também é uma palavra-chave que ip usa.
Este é um comportamento não documentado, mas certamente parece funcionar.
Você saberá se entrou em conflito com o analisador de opções do ip se receber uma mensagem (ligeiramente gramaticalmente incorreta) como:
either "dev" is duplicate, or "bridge" is a garbage.
Para coisas que devem estar 100% funcionando o tempo todo, como scripts de configuração de rede, você deve incluir dev apenas para ter certeza.