I agree with @Olin's post. At the same time, there's another point of view on which I2C or SPI to implement in software and which in hardware.
I2C bus has a lower top speed than SPI. Typical I2C bus has a max data rate of 400 kbps **. Typical SPI can easily run at 4 Mbps. Some applications require high speed transfer over SPI. For example: SD cards, radio comms. A bit-banged SPI would be too slow. As a result, the SPI would have to be implemented with hardware MSSP, and the slower I2C would be implemented in software.
Sometimes the speed is not important. For example, a bus slave generates data slowly, so the bus speed is not the limiting factor.
** There are high speed versions of I2C, but they are note very common at the moment of writing.