PnP requires support both in hardware and in software. The hardware typically requires some sort of ID code that it can supply, in order for the computer software to correctly identify it. ADB used a simple four-bit code for this, but most systems use longer codes of several types in order to deliver more information, including names and serial numbers.
Another ability needed in the hardware is related to the computer bus being used, which needs to be able to recognize changes to its configuration when devices are added or removed. In the case of ADB the hardware did not have this ability, so the system was unable to support PnP. More modern systems, notably USB and FireWire, deliberately designed such support into the bus.
Finally, the operating system of the computer needs to be able to handle these changes. Typically this means looking for interrupts from the bus saying that the configuration has changed, and then reading the information from the bus to locate what happened. Older bus designs often required the entire system to be read in order to locate these changes, which can be time consuming for lots of devices. More modern designs use some sort of system to either reduce or eliminate this "hunt", USB uses a hub system for this purpose (and others).
When the change is located, the OS then examines the information in the device to figure out what it is. It then has to load up the appropriate device drivers in order to make it work. In the past this was an all-or-nothing afair, but modern OS's often include the ability to find the proper driver on the Internet and install it automatically.