udev никогда ничего не грузит.
Всё-таки иногда грузит.
Но да, похоже я заблуждался с тем, что грузит всегда и, по возможности, всё.
Когда запущен etcnet, он не смотрит интерфейсы, он смотрит /etc/net/ifaces/* и делает всё, что в них сказано. Сказано MODULE=... -- он и грузит указанный модуль, а далее начинает ждать интерфейса $(basename $(dirname /path/to/options)) -- он появится, когда udev отработает событие. Но ждать не придётся, если такой интерфейс уже есть.
Это понятно, но если есть /etc/net/ifaces/eth0, а модуль этой сетевой карты уже загружен, и имя интерфейса какое-нибудь eno1, то MODULE= уже никак не спасёт.
systemd тут совсем сбоку: он загрузил etcnet и где-то параллельно работает systemd-udevd.
Вот именно это "параллельно" и проблема: загрузка udev должна произойти до etcnet, чтобы всё было переименовано и готово. Может быть загрузку модулей можно оставить и etcnet, если уже запущенный udev успеет переименовать.
Я вчера успел посмотреть ещё раз, как всё грузится с sysvinit, и, надо заметить, удивился. Я думал, что udev грузится из initrd, и потом уже стартует ещё раз как S02udevd. Но нет, есть ещё третий запуск, уже из /etc/rc.d/init.d, но ещё при корне в ro. И вот тут всё и происходит похоже: запускается udev, потом грузятся модули и строится /dev, потом ФС перемонтируется в rw и дело доходит до S02udevd. Но это наспех и перед сном, надо ещё раз внимательно посмотреть.