Mit I2C geht das so einfach, weil dort ausschliesslich Widerstände als
Pullups dienen, somit nie mehr als 3,3V anliegen. Einzige Einschränkung
ist, dass auch die 5V-ICs die 3,3V als High-Level erkennen müssen, was
zwar nicht zwingend gewährleistet ist (AVR: nom 0,7*Vcc, also 3,5V),
aber in der Praxis meist trotzdem funktioniert. Es kann allerdings sein,
dass die maximale Geschwindigkeit beeinträchtigt ist, weil es deutlich
länger dauert bis ein 5V-Empfänger diesen High-Pegel als solchen
erkennt.
Bei SPI ist die Sachlage komplizierter, weil bei einem 5V-Master und
3,3V-Slaves der Master die Eingänge des Slaves mit 5V bedient, oder
umgekehrt der 3,3V-Master die 5V-Daten des Slaves verdauen muss. Da muss
man also etwas tun, siehe eben Pegelwandler.