The NicoHood firmware for USB devices does not include a serial number. With the absence of a serial number, the operating system can't determine the uniqueness of a device. For my joystick project, I patched the NicoHood HUD classes to include a serial number to fix that error. With the newer Arduino pluggable USB API it should be a lot easier. Also, because the AtMega32U4 has no dedicated chip for USB interaction, the COM port is provided by a virtual USB device inside the AtMega32u4. This virtual COM port generates a new tty port when the device is enumerated.
https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro#toc3
https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro#toc3
Since the boards do not have a dedicated chip to handle serial communication, it means that the serial port is virtual -- it's a software routine, both on your operating system, and on the board itself. Just as your computer creates an instance of the serial port driver when you plug in any Arduino, the Leonardo/Micro creates a serial instance whenever it runs its bootloader. The board is an instance of USB's Connected Device Class (CDC) driver.