I would suspect that the bus pirate isn't exactly up to scratch in measuring high frequencies - it also probably doesn't take into account the fact that I2C will have long periods of idling between bytes, for example because the hardware is waiting for more data to transmit.
Ok so on your suspicion of the Bus Pirate I added in another signal to calibrate it. On the same board as my AVR chip I have a DS1307 real time clock that I set to output a 32.768kHz signal that I could compare others too:
The logic analyser is telling me that the DS1307 signal is running approximately 5 times faster than it is and so that is where my confusion is coming from.
I was measuring the frequency correctly (reciprocal of time between to adjacent peeks) but the logic analyser's frequency measuring tool is out.
The RPi works as it's supposed to.
My AVR code is slow and need s improving to work at 100kHz.
In dmesg it looks like i2c_bcm2708 is loaded before /etc/modules is considered.
So the baudrate has to be given to the kernel before that.
I haven't had a chance to try your ideas yet but will let you know how it goes.