how is setting up a one-time mapping of serial numbers to physical mapping different from setting up serial number to function mapping?
as for other technologies,
i2c has the exact same problem as USB, the only identity possible is what's reported by the device.
PCI has a slot number ID, but I've seen different versions of the kernel detect the multiple PCI buses in a different order
ISA didn't have any slot identifier, everything was based on the configuration of the individual board.
depending on how many of these serial adapters you need, your best bet may be to buy them from a more upstream provider, you could probably get someone to program a bunch of them with a set of identifiers (i.e. if you need 5 serial ports, get a bunch of them labeled and electronicly identified as #1, a bunch as #2, etc), then your udev rules could map them properly and your only limitation would be that you only replace a #1 with a #1