The interrupt on change is generally for a half byte of I/O, where the external interrupts are generally for individual bits. As you said already, one thing you need to do in the IOC ISR is to figure out which bit (or bits) changed.
The IOC is also a bit tougher to use, even beyond that. It is imperative to read the port soon before enabling the interrupt, and even more important to READ THE PORT inside the ISR! If you have a slow-changing signal, and think you can set a flag inside the ISR and do your read later, outside the ISR, think again! The read of the port (or any bit on the port, if I recall correctly), resets the latch on the comparator that triggers the interrupt. If you don't clear it inside the ISR, it will immediately retrigger when you exit the ISR. If you remember to do this, it's all good, but if you forget and think you can read the port when you get around to it, you'll get a bit frustrated until you remember to do the read in the ISR.