Each port is just one byte in size. Each PnP card has many configuration registers so that just 3 addresses are not even sufficient for the configuration registers on a single card. All other cards note that this isn't their card number and thus don't listen. If there is a conflict, it will change the address. Thus if you use say isapnp to set or check configuration data it must determine this read-port address.
Interrupts convey a lot of information but only indirectly.
These registers contain status information about the device . The software reads the contents of these registers and by inspecting the contents, finds out what happened and takes appropriate action. When such an interrupt is issued, the CPU runs all interrupt service routines for all devices using that interrupt. The first thing the first service routine does is to check its device registers to see if an interrupt actually happened for its device. The putting of a voltage on the IRQ line is only a request that the CPU be interrupted so it can run a device driver.