Also you should not comment out the for loop at the end. If that is not there, then the 'main' function will end and, if the C runtime is anything like the XC8/16 one, the device will reset and then the 'main' function is called again.
Without knowing the actual PIC, but going by the general way Microchip design their 'interrupt on change' capability, you can get an interrupt when any of the target pins change and part of the ISR is to read the port (which also clears the mismatch condition that triggered the interrupt in the first place - and I see you are doing) and then check that the pin(s) you are interested in have changed and in which direction. Remember that interrupt on change triggers on both edges.
Also, I hope you are debouncing the signals in hardware as there is no debouncing code. If not then you will be getting a number of spurious interrupts for each button press and release.
Susan