It's because their frames interfere. Pistons affect the frame particle directly before them and then 14 particles in both directions perpendicular to the piston arm.
This isn't a problem when the pistons extend as the first piston can just take almost the whole frame, leaving no frame to move for the second piston and a few leftover pieces of frame for the third (i.e. you're really lucky that extension works for you in this case).
Retraction, on the other hand, fails spectacularly. All three pistons try to retract the frame in a 14-particle radius (meaning 29 particles of frame with one being directly in front of the piston and 14 on both sides), and none succeed as the arms of the other pistons are in the way.
The solution is to place pistons with 28 pixel gaps between them.