As interfaces de rede são testadas na inicialização e o resultado dessa análise não é previsível. Os nomes das interfaces são atribuídos na ordem em que são encontrados, mas infelizmente isso não é determinístico. Este é exatamente o problema com os nomes de interface da "velha escola" que Nomes Previsíveis de Interface de Rede está tentando resolver.
Você também pode criar um arquivo de regras do udev "manualmente" para mapear um endereço MAC para um nome de interface, por exemplo:
/etc/udev/rules.d/70-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"
Note que não são os endereços MAC que são trocados, mas os nomes das interfaces. O endereço MAC é (geralmente) fixo no hardware. O que está acontecendo no seu caso é que a interface física que tem o nome "eth0" às vezes recebe o nome "eth1", o que significa que sua configuração de rede estática é aplicada à porta errada.