Does Unity null all references to a GameObject after Object.Destroy is called on it? If so, how?

So when you Destroy a game object.. any and all references to it turn null. How exactly does Unity implement this functionality? Is it a built-in .Net feature that anyone can use, or is it just a reference registry in each game object somehow?

To quote Lucas Meijer:

It's a special thing we implemented (and which is only turned on in the editor). When you Object.Destroy() a unity object, the managed wrapper (the .net object you usually interact with), is not thrown away. instead the managed wrapper realizes that the object it wraps is destroyed, and informs you of that fact when you try to do anything with it.

When you have no more references to the .net object, and a new garbage collector run happens, the actual wrapper object itself will be cleaned up.

I just tested this but got the same behavior in the web player as in the editor.

I created two Spheres. One sphere had the following script:

function OnMouseDown() {
  Destroy(gameObject);
}

The other sphere had the this script:

var go : GameObject; // set this to the other sphere

var doneOnce = false;
function Update() {
  if (go == null && !doneOnce) {
    doneOnce = true;
    GameLog.GetInstance().Info("go == null"); // my game log GUI
  }
}

In both cases the "go" reference was set to null automatically when I clicked on the sphere that "go" referred to.

What's the expected behavior from Unity? Is this a bug or a feature working as expected?