Mivae:
keep this in mind, thanks. Haven't worked with interrupts in combination with i2c yet, but I guess it will just be something as "hey, drop everything you do and read the incoming data right now"?
That is the normal use of interrupts indeed.
In this case it saves you scanning the complete matrix looking for inputs over and over again (the normal way of trying to read a large number of buttons). That would keep your MCU quite busy, and if you have something else to do there is a fair chance of missing button presses.
So instead you wait for an interrupt to come in telling you something has happened, scan which of the 8 ports has the interrupt, work your way up until you find which group of 8 ports has a button pressed, and then scan those 8 ports to find the activated input. This process shouldn't take more than 1 ms depending on the speed of the I2C bus.
A neat trick to save you a lot of work. Won't work too well if you have many buttons pressed all over the time, or more than one button press at the exact same time.