Just a couple of things I noticed whilst browsing the nodereference source that you might want look into.

For the file nodereference.module (1.138.2.54),

In nodereference_theme(), shouldn't:

    'nodereference_formatter_default' => array(
      'arguments' => array('element'),
    ),
    'nodereference_formatter_plain' => array(
      'arguments' => array('element'),
    ),

be

    'nodereference_formatter_default' => array(
      'arguments' => array('element' => NULL),
    ),
    'nodereference_formatter_plain' => array(
      'arguments' => array('element' => NULL),
    ),

?

And then, in nodereference_elements():

function nodereference_elements() {
  return array(
    'nodereference_select' => array(
      '#input' => TRUE,
      '#columns' => array('uid'), '#delta' => 0,
      '#process' => array('nodereference_select_process'),
    ),
    'nodereference_buttons' => array(
      '#input' => TRUE,
      '#columns' => array('uid'), '#delta' => 0,
      '#process' => array('nodereference_buttons_process'),
    ),
    'nodereference_autocomplete' => array(
      '#input' => TRUE,
      '#columns' => array('name'), '#delta' => 0,
      '#process' => array('nodereference_autocomplete_process'),
      '#autocomplete_path' => FALSE,
      ),
    );
}

why is there a

'#columns' => array('uid')

?

I don't see what '#columns' does, if anything.

Thanks!