Hi,
I2C:
.. with I2C you need pullups as said. The timing is limit by the value of the pullup resistor and the length (capacity) fo the whole cable. ( and the devices timing spec of course)
.. I2C is not goot for long cables, best to be on one PCB.
.. with I2C you need at least one extra addressing byte per frame
.. I2C is not easy to expand
.. I2C devices (mostely) have fixed addresses, so sometimes you get an address conflict by using different devices with same/overlapping address (especially with large EEPROMs)
.. I2C defines the speed, voltage levels and at least a part of the protocol..
SPI:
.. SPI datarate is not defined (i know SPI flash devices with 50MHz SPI clock speed)
.. you can use SPI with long cables by using level shifters like RS485
.. with SPI no addressing byte, but extra CS line is needed (With RS485 bus you need it to enable the RS485 driver)
.. No fixed adress, so from this point no limit of what device and how many devices you use...
.. no winner, every interface has its benefits...
hope this helps
Klaus