Manage programmatically added fields
You have to add a custom submit handler to handle these fields. The form fields you add are custom, so they won't be attached to the node.

$form['user_registration']['#submit'] = 'custom_user_registration_handler';


In the submit handler you'll be able create the user like you're doing no in your presave function. The presave function should load the user and attach it to the node.

Edit \

Problem: The node_presave hook does not contain the email adres so it's not able to lookup the right user.

Solution: The default node form has an author form field. You probably hid that field but I think your still able to fill the value. What if you fill the 'author' field with the email value, this will be the user name.

So in your custom submit handler:


Create the user;
Fill the (hidden) author form field with the right value (fill the right value in the form_state object/array?).


The the default form submit handler will do all the hard work for you.