I made this work using an eye-bone and a bone track-to constraint.
Use an eye-bone at the center of your eye, parented to the head bone, pointing out the eye. Add a bone constraint for the eye-bone to track your eye-target. Test that the eye-bone properly tracks your target as the head moves.
Parent your lattice to the head bone (you might need to manually create a lattice vertex group with the same name as the head bone). Test that the lattice moves with the head bone.
Select your eyeball, and add a copy-rotation constraint copying the rotation of your eye-bone. It should be local space to local space.
If your eye doesn't line up afterwords, go into edit mode on it and rotate it to line up. (if you have an object scale on your lattice, edit-mode rotating your eye will cause it to wobble out of the lattice. I don't scale my lattice, I edit it's shape in a shape key.)
The copy-rotation is local-to-local because the rig is rotating both your bone and your eye-lattice. As the eye-bone tracks the target, you want to copy it's local space rotation to the local space rotation of your eyeball.
One consequence of using a lattice to flatten an eye-sphere, is that as the eye-bone tracks the target further off-center, and the eye copies it's rotation, the eye itself will appear to be looking a bit further than the bone is pointing. This is a consequence of the deformation. If you center your head and turn off the lattice deformer (edit mode your eye-sphere), you'll see that the un-deformed eye is pointed the same place as the eye bone. If it is important to compensate for this, you can use a driver equation instead of a copy-rotation constraint to set the eyeball rotation. This will give you a coefficient to tweak the relative rotations.