I'm doing some custom boards using a 328P running at 3.3V, which means I cannot run at the normal 16MHz. Is there anything important that does not work at 8MHz? I'm not concerned about the reduced processing power, and about the only peripherals I'm using are I2C (@100kHz), Serial (@38.4kBAUD), and the A/D. I assume all of those will work exactly as they do when running 16MHz?
The imp on my shoulder is encouraging me to say something about needing to know which 8mhz you are using, the odd or even, so that you can set the compiler to use the odd or even memory addresses as appropriate . . . :o
I have several projects that work using the internal 8Mhz oscillator. I am not aware that I have lost anything other than speed that I did not need. (He was a poet and he did not know it --- groan)
The internal oscillator is less accurate. On some chips more so than others. With timing critical operations like UART communication, it can be far enough off to cause problems.
You'll need to configure/tweak the IDE so any timing functions or serial communications don't get messed-up and there could be complications if you use the bootloader at the wrong speed.
...That's more "complication" than I'd want to get into.
Once the code is loaded it will simply run slower.
Configuring, sure, but it's as easy as selecting the right board from the Tools menu. There should be no "tweaking" needed. Just use an 8 MHz board definition and F_CPU will be set to 8000000L and the bootloader and upload baud will match. Arduino AVR Boards has some 8 MHz boards, but MiniCore is best.