My bet is that the needle works loose from its correct position. The knob that holds the needle in place may gradually loosen with stitching. When you change the needle, you position the new needle correctly. Try repositioning the old needle and see if that works just as well!
Of course, sometimes a needle will become slightly bent (from hitting pins, or from heavy-handed manipulation of the fabric as it is feeding, or from who-knows-why usage). When this is the case, you have to put in a new needle. I've often compared the old needle to the new one before replacing, and noticed that the old needle has a slight bend to it in some direction.