Symptoms:
This behavior is by design. A guest OS or application must not make any assumptions about the order in which the devices will be enumerated.
A guest OS may obtain the identity of a device by using the ACPI _DSM (Device Specific Method) on the PCI slot object. The ACPI _DSM method for PCI slot objects is described in PCI Firmware Specification Revision 3.3 section 4.6.7, "_DSM for Naming a PCI or PCI Express Device Under Operating Systems". Further information on guest OS support for device identification using _DSM might be found in guest OS documentation or obtained from the guest OS vendor.
_DSM support for PCI/PCIe device naming is available in virtual hardware version 10 and newer. Calling the ACPI _DSM method on the slot object for a given PCI Bus/Device/Function and requesting PCI _DSM function 7 will return an ACPI Package object, the first element of which is the Instance Number (which will be a large unsigned 32-bit integer) and the second of which is the String Name, Unicode-encoded (UTF16-LE). The Instance Number is expected to be a very large value, unsuitable for direct use as a user-visible identifier.
There are a few ways to use this information:
Alternative approaches to determining guest device identity include configuring the guest OS to identify Ethernet adapters by their MAC address, or manually evaluating the PCI hierarchy information from the virtual machine's configuration file.