networkd is not bringing eth0 up at boot

Solution 1:

The reason why adding a stanza to /etc/networking/interfaces solves your problem is that you have the networking.service enabled. If you look at the networking.service file, you will see (partly edited):

[Unit]
SourcePath=/etc/init.d/networking
Description=LSB: Raise network interfaces.
.....
[Service]
.....
ExecStart=/etc/init.d/networking start
ExecStop=/etc/init.d/networking stop
ExecReload=/etc/init.d/networking reload

which clearly shows this is the service that provides compatibility with the old SysV script, which you wish to avoid.

Though this is not clearly stated anywhere (that I could find!), my guess is that this conflicts with systemd-networkd.service, which can provide exactly the same service, albeit without the compatibility with SysV.

So my guess is to disable networking, and to reboot to check that this is (the only piece of) the solution.