You all are driving the digits directly. That is okay as long as the resistor value is high enough. You need the current through the digit (which is the sum of the current through each segment) to be less than 40 ma).
If you used smaller series resistors on the segment drives, you would need to buffer the Arduino output with a transistor.
if you were to use something else to drive the digits (shift register), that 40 ma may not work. Some shift registers can't sink 20 ma per segment either.