With udev loading drivers in undefined order, new interfaces should have a name chosen and some sort of ifcfg file written to have sane ordering for added devices.
Define "sane". See http://linux.dell.com/files/name_eths/ for my idea of sane. It forces the device names to ascend, starting with embeddeded NICs (in PCI bus/dev/fn order, not random kernel order), then add-in cards by ascending slot number (again, in PCI bus/dev/fn order).
What I'm mainly talking about here is doing something on added/removed devices ; the current code does next to nothing. What's needed at the minimum is assigning *a* device name (probably first-unused), writing a config file, and deciding if we want to do ONBOOT=(yes|no). Or doing ONLINK=(yes|no).
Fixed in 1.2.54-1; we now write: # <description> DEVICE=<whatever> ONBOOT=yes BOOTPROTO=dhcp HWADDR=<whatever> for all added devices, and move old configs to <name>.bak. Also, some code added to normalize any temporary names to something sane.