yep that should be fine for i2c. You can buy dedicated level shifting chips, but if you prefer to build things out of individual components one somewhat inefficient way is the technique used by the disipark for it's USB connector. Grab some 3.3v zenner diodes and connect the spark to your device through some resistors (500ohm or something like that) and with zenner diodes connecting to the resistors *on the device side* to ground, with the diode oriented so it's stripe is on the signal side, not the ground side. This will effectively short circuit any extra voltage above 3.3v, and the resistor will limit the current. It is inefficient because the extra voltage is thrown away as heat, just like the linear regulator on the digispark and other arduinos does to take input voltages down to 5v.
You can even use this technique to make crude power supplies for small chips and microcontrollers, but it's pretty crummy because it ends up wasting nearly the same amount of power regardless how much the chip attached uses. Good if you don't have any linear regulators on hand and your project isn't battery powered though.
Something like this isn't necessary for i2c devices because the digispark should never connect 5v to the device - it should only alternate between leaving the pin floating (unconnected) and connected to ground.
Another solution is to power your digispark at less than 5v. By connecting the 5v connection point to a 3.3v power supply the whole thing will run at that lower voltage just fine, but you should compile your project with the 1mhz or 8mhz option, as 16mhz and 16.5mhz are out of spec for operating below roughly 4v. Also note that you cannot use usb when running at lower voltages, unless you specifically disconnect the usb power pin somehow (bit of tape over it or something) and power the device externally.