Yes they are fully compatible, assuming you don't end up with very old silicon masks, in which case S12x256 parts may be more buggy than others, because they were released first. I doubt this will be an issue though. x256 is a super-set of x128.
If you want to take advantage of the additional RAM and flash, then you'll naturally have to make changes to the binary:
- You need to change the linker script to correspond to the larger memory map. In Codewarrior this is done by changing the .prm file.
- You have to set the INITRM and INITEE registers to correspond to the larger memory map.
- You have to adjust the stack pointer and possibly also the stack size. I would strongly recommend placing the stack at the beginning of the RAM, so that in case of stack overflow, the program will merely attempt to overwrite read-only EEPROM memory, instead of going Toyota all over the RAM.
As for GPIOs, every S12 has the same amount, given that it has the same amount of pins. You have around 70 GPIO pins on a QFP112, no matter memory size. On top of that you have 8 or 16 input-only pins, depending on whether there is one or two ADCs. Not sure where you have heard any other figures.