OK so have this to offer:
I have not modified any of the scripts for reticle, BlackMask or GazeRay.
I move the CarboardMain and UserHead objects to the position I require and then created an empty game object with a picot dead centre in my scene and set CardboardMain and UserHead to be childrean of it.
I then rotate the parent and this thus moves the CardboardMain and UserHead all as one.
I can go into VR mode and see the reticle, go out to AR and see reticle, go back to back into VR and see the reticle and it always appears.
The only time it vanishes is when the app is backgrounded and then reopened? If I then go back out to AR the reticle reappears.
Is there some hidden code that when the app restarts in VR it resets the retuictle to factory start up position where it was in the sample (which I use as a base for my app?)
Including debug output in Reticle.cs in the if cam statement I get this
No to ... VuforiaBehaviour.Instance.SkewFrustum
this.transform.localPosition = Vector3.forward * (cam.nearClipPlane + 0.5f) results in -> (0.0, 0.0, 0.6)
this.transform.localScale = new Vector3(0.01354849, 0.01354849, 1)
And this output is the same when in VR and when I return from it being backgrounded?