If default_value is null*, defualt value becomes array only in content_default_value.

This I believe causes duplicate field is required messages

I believe what is happening relates to this:

if ($elements['#required'] && (!count($elements['#value']) || (is_string($elements['#value']) && strlen(trim($elements['#value'])) == 0))) {

When user does not check a value in the form and clicks submit, but field is required:
array(array('nid' => NULL)) -- all good till get down to nid, then goes uh-ho I'm empty but required
array() -- bad from begining (count) == 0, two form_set_errors.

Or at least, that's my guess.

Not sure if there's any good way to address it though.

(*Which can happen when some icky module accidentally unsets default_values on field settings for all fields instead of just it's own, or someone doesn't save their field settings ).