12 bit ADC to 8 bit DAC
The first thing I would enjoin you to do is to measure the actual accuracy of your ADC. The 12-bit performance announced by the manufacturer can often be reached only in ideal conditions, such as:


Using an external precision voltage reference rather than the built-in one.
Using a distinct power supply for the analog section of the MCU.
Using all the necessary EMI isolation/filtering parts as specified in the app notes... that your target dev. board might not have because of cost cutting (it can be as simple as a ferrite between VCC and AVCC).
Using slow sample rates.
Preventing any I/O pin to switch during acquisition (eg, disabling a SPI or UART spitting data in the background, disabling interrupts causing a GPIO to be toggled, disabling PWM peripherals..), or even putting the entire chip in sleep mode during acquisition.


In non-ideal conditions, I have seen ADCs lose up to 3 bit of precision. All this to say that your assumption that doing the processing with 12-bit data all along is correct as long as you truly have a resolution of 12-bit on your input; but if it's actually 8 bits because you are far away form the "sweet spot" of the ADC, there's no point keeping and processing 4 bits of noise all the way - you can just do the reduction at the source.

Converting from 12 bits to 8 bits through rounding or shifting is going to cause quantization noise correlated with your input signal. Dithering algorithms can be used to solve this problem and spread the quantization error. You also have the option of shifting the quantization noise in a frequency band where it is less harmful, through noise shaping methods.