When you plug a USB device into a USB port, the plug and play subsystem reads the device ID of the connected device, then looks through a library of INF files on the machine to see if it can find a match for the device ID. If a match is found in the INF file, then the driver information in the INF is read, and used to load the appropriate driver. However, in addition to this, USB ports also have different identities as far as the operating system is concerned, so plugging the USB device into another USB port will cause the driver load process to be repeated. Therefore if I was adding any device drivers to a build that works with a USB device, I would routinely "initialise" every single USB port on the machine with the same device to make sure that the registry contains the correct descriptors for this device on each of the ports.
While trying to find a way of handling mobile phone software for USB connected mobile phones, I also found that each phone had a different identity linked to the IMEI number, and so it was insufficient to just initialise each USB port with a single phone, as using a different phone (albeit the same model) would require a completely separate set of registry keys to be created.
The way I found out what was going on, was to export HKLM and HKCU after each device was installed, and compare how the registry entries were created at each step. Not a five minute job but the only real way to establish what is going on.
I cannot directly provide a solution to your specific situation, as there are too many potential variables, but hopefully I can give you a direction to follow.
If you are testing with the same machine each time, then it should be possible to exclude hardware differences at this point, as variables such as the bios serial number remain constant.
My first test would be to load the image, check device manager to make sure all drivers have loaded and there are no yellow ticks against any device, then export HKLM. Then repeat the process and compare the two registry exports. This should identify if there is any difference in the way that the drivers are loaded viz a viz the USB ports. If you can confirm that the USB ports are mounted identically each time, then that aspect can be excluded as a causal factor.
Then repeat the process after plugging in the SAME printer each time, and check whether the same registry entries are created for each USB port. Then try a different printer and check whether the same registry entries are created, or there is a difference caused by each printer having a unique identity.
From the symptoms you describe, it looks like the printer is being treated as a new device when you plug it in after restoring the image, but what is unclear is why this is happening if ALL the hardware is identical between image restores.
There are some free capture tools you can download, such as InCtrl5 which could be used to snapshot the machine filesystem and registry before and after plugging in a printer, so that you can find out what is changing each time. Once you know, it may be possible to automate this procedure.