Modifying the Properties of Values within an Array

From a coding standpoint, which do you think would work better?

I would go with the shift registers as it is a set and forget interface.
With multiplexing you have to keep feeding it with software which reduces what else you can do with the processor's CPU cycles.

(from a coding standpoint, how to keep looping through the digits while keeping them on their respective number display)

The normal way is to have a timer trigger and interrupt and have the interrupt service routine (ISR )put the next pattern up. You change the number by changing the pattern in the four memory bytes the ISR uses for updating the display.