Why does my user not get added to the database on custom registration?

$_SERVER["PHP_SELF"] will NOT get you the current URL in WordPress, but will return /index.php (as that’s the PHP script that is being executed).
WordPress then doesn’t know what to do with the data that has been submitted and decides to redirect to the home page.

If you want to submit to the current page, you can just leave the action attribute empty, e.g.

<form action="" method="POST">

What you are doing will work, but it’s not really the WordPress way of doing things, you might want to look into developing a plugin and using AJAX (you don’t have to have a plugin for that, you can simply define actions in your theme’s functions.php).