and why didn't keep that part the same so ALL shields work??? they could have improved the board all the wanted, but just worked around that so that new shields and old shields would be compatible..
All engineering decisions have trade-offs. No matter how good you think a trade-off is, it will annoy someone.
The SPI and I2C functions on the ATmega chips are done in hardware, so they have physical pins associated with them. The physical ports for those pins are different on the ATmega328 (used in the Uno) and the ATmega2560 (used in the Mega). To keep pin assignments clean (it is a clever way the Arduino library maps "Pin 1" to a pin on the ATmega chip), it was decided to leave the SPI and I2C functions on the native pins of the microcontroller. This made hardware layout simpler and it made software implementations for functions like digitalRead/Write much easier (and faster).
Some thought was put into making shields compatible.
The ICSP header is in the same place on both boards and that header duplicates the pins used for SPI. So if the shield uses the ICSP header for SPI (like the Ethernet shield) then this isn't an issue.
The latest revisions of Arduino boards have dedicated I2C pins on the headers.