Locking and then resetting one Axis - Yes, I know it's been asked a 100 times....

The locking part has and I do know the answer to that....Using a configurable joint and setting x,y,z motion and/or angularmotion to Locked or scripting to z=0 in the update.

This works for the most part but I've found that when I drag my player object across a ground plane with a collider, that the Z-axis (for me) shifts ever so slighty, so a value set to 1000 will end up at 1003. This is enough to send my player off the boundaries of my game plane.

Does anyone know how to constrain it to a value and if the value ends up slightly off it is automagically reset to 1000.

Use this code (untested js):

function FixedUpdate() {
    transform.position.z = 1000;

or (again, untested js):

ground : GameObject;

function FixedUpdate() {
    transform.position.z = ground.transform.position.z + 0.1;

The first code constantly sets z to 1000. The second code constantly sets z to the height of your ground, whatever that may be. Pick the one you need.

you should do z=0 in LateUpdate().