There are several different kinds of "accuracy" and it's not immediately clear which kind you're describing. There's actual accuracy, which is how close the system gets to its commanded position, repeatability, which is how close the system gets to a commanded position after moving to another position, stability/drift, which is how much the position error changes over time and can be a short- or long-term, linearity, which is how consistent the positioning is over the range, and noise, which is how much the system moves when commanded to hold position.
The application is for a camera pan-tilt platform, so the load is constant.
That's only true if the load is balanced over both rotational axes. If it's not perfectly balanced, then the load will change through the rotation. This could introduce an error term via simple mechanical deflection in the drive or the mechanical structure, or by the fact that the required positioning and holding torque will keep the motor itself from holding its commanded position. Even if there were no gearbox involved and the load were solidly mounted to the shaft there would be a positioning error as the torque changed because the torque will move the rotor away from its theoretical magnetic position. The direction of the holding torque may even reverse if the load's center of gravity crosses from one side of the axis to the other, which in combination with backlash could be a significant issue.
The programmers noticed the positioning accuracy would constantly get worse the more it moved. I did some one-way position movement and noticed the drift was constantly increasing the further it moved from the start point.
So is the problem getting worse as the system makes more moves (as if it's wearing, for example), or is the accuracy over a single move worse the longer the move is? If the latter is it really the length of the move or where the destination is within the range? These all imply different underlying problems.
I've heard that stepper motors and gearboxes are bad for positional accuracy, but I also don't think not having any position feedback aside from some limit switches would help either
Well, define "bad"? Open loop steppers are used all over the place because they're good enough for a lot of applications. Closed loop is certainly better in terms of reliable accuracy, but costs more and is therefore "bad" if the application doesn't require it. Closed loop where the loop includes all of the mechanics--like some high end CNC machines that use glass scales directly on the axes for position feedback--is even better, but even more expensive. Gearboxes and other mechanical transmissions certainly introduce additional potential error terms, and where accuracy is required those need to be designed to minimize those errors, which is why you see harmonic drives used in robots (where the mechanics amplify angular errors so angular position is REALLY important) and ball screws with preloaded angular contact bearings and zero-backlash preloaded ball nuts in CNC machines. It's engineering, "bad" and "good" are all relative to the application.
One other thing specific to steppers, although this is likely not significant here because it will be largely swamped by your gearbox issues, is that when microstepping the microsteps are often not linear across a full step. This is because the way that fractional step currents in the windings translate to magnetic field strengths and thus torque on the rotor varies a bit from the theory due to design and manufacturing factors in the motor itself. Trinamic has an appnote about this somewhere, and some of their drivers include a lookup table that can be programmed to modify the shape of the microstepping curves to compensate. They also have their own line of motors specifically designed to provide very linear microstepping, which in my testing are noticeably better than at least the real cheap ones from ebay or wherever.