Contrary to the previous answer, I don't believe that the problem is EV3.
I do believe that your problem is a hardware issue. I have personally run a test or two on this, and my conclusion is that the wheels are set off kilter on their axles.
The answer is bushings. Bushings are the little doodads that keep a gear or wheel in place on the axle. Put one on either side of a wheel, and the result is that those 90-degree turns, which produce torque on the wheel, relieved by movement along the cross-axle, will no longer set your wheel out of place. If this doesn't work, I would do as the commentators and other answer-er suggest, and make sure that your unit can hold a charge.
Measure this by telling just one motor with your EV3 unit to turn. Measure the amount of rotation. Now run the program again. You don't need anything attached on the motor, so as not to throw it off, and when the next turn program is run, you will have your answer based on the amount of rotation.
If it is lower, your EV3 doesn't hold charge anymore, and you need a new one. Sorry.
If it is the same, it is a structural problem, and you just need to make sure that nothing is moving noticeably out of place when running it.