What is all of this supposed to do?
<br />
<p id="reg_passmail">
</p>
It’s in between the last input field and the button and creates a line break as well as a paragraph break.
Do I just take out the <br /> & </p> or the whole thing?
It seems like you can take the whole thing out since there is nothing in the paragraph, assuming that the same condition exists on all posts & pages. You may need to leave the <br /> but the empty paragraph is definitely creating an unnecessary space.
When I delete the whole thing I lose the Registration button.
Try changing the <p> and </p> to <div> and </div> respectively.
I have it like this and it still has the space in there
<?php do_action('register_form'); ?>
<div id="reg_passmail">
</div>
See what #reg_passmail style attributes are in the CSS. There may be some height, padding, or margins added there. I still don’t know what that div is for as it appears empty in your page source.
reg_passmail doesn’t show up in the CSS
If it’s not in the CSS of your theme it must be in the CSS of a plugin. It is not a native WordPress ID.