Just curious about this. Does anyone have a perspective on why the stock Arduino boards are 5v instead of 3.3? It seems like it would have simplified much with peripherals.
Back to the OP's question... I think it is important to note that if you are running an Atmega328 at 16MHz and 3.3V you are running it out of spec. I don't think the Arduino team would want to mass produce a board that was not within the specs of the processor. The only way around this would be to use some sort of level translator which is probably not worth the additional cost for most users.
Although running it at 3.3V is out of spec for 16MHz, I have never heard of anyone having a problem doing so. Ladyada has a great tutorial on how to convert your 5.0V Arduino to 3.3V
. You just need to replace the 5.0V regulator with a 3.3V one.
I have also designed a board for this type of situation that keeps the Atmega328 running within spec. The Freeduino Hybrid
has a built in 3.3V regulator and an 8-bit level translator to allow you to use up to 8 I/O's at 3.3V. There are also some other additions that a regular Arduino is lacking.
You other option is to just use something like a 74AHC125N tri-state buffer or an CD4050 level shifter. Both of those parts are through hole components and will work well on a breadboard.