First of all, good electrical engineering practice would use 0 V as the common. Using +5 V (if I understand you correctly) is just not good practice. Possible, but unwise imho.
Now, the extra pulse at the end of every cycle, leading to a slow drift sometimes. Some thoughts:
When you move a single axis it is easy for the software, and my understanding is that you have no troubles here.
But when you move two axes at once with a G1 move, the software has to keep the two axes in sync. OK, it does this. But now consider what happens at the end of a pass, when you want to reverse the move. The software has to set things up for the two-axis sync again, in the other direction. Under these conditions it is possible for the software to reset the outputs and incur a single-pulse error on one axis. If you repeat this EXACT cycle you are going to get this single-pulse error every time - if it happens at all.
Note: this is a KNOWN PROBLEM in the CNC world.
Well, who is going to notice a single pulse? It's probably less than a micron or so. Ah, but what if you do this 100 times: the single pulses start to add up. Then you start to see an offset - sometimes.
OK: test this. Try cycling 1.000" 100 times on both axes and log the offset. Now try cycling 1.001" 100 times, and 1.002" and so on. See if the error comes and goes, depending on the EXACT measurement commanded. It will be interesting to see the results.
Cheers