Плох и тот и другой вариант.
Он подразумевает что вывод идёт прямо вперемешку с запросами к БД. А надо сначала выполнить
все запросы, собрать все данные для вывода, и только потом начинать выводить.
<?php
if (isset($_POST['register'])) {
if ($user) {
$error = "This email address is already associated with an account.";
}
// остальные проверки
и только после того как закончили все проверки, начинаем выводить хтмл.
А вот что в этих кусках кода
действительно плохо - это то что переменная пихается прямо в запрос.
Да. И никакого "накладного расхода" при испльзовании echo, тем более по сравнению с другими вариантами вывода, в природе не существует - это всё бабкины сказки.