Плохо ли так выводить html?
Плох и тот и другой вариант.

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

А вот что в этих кусках кода действительно плохо - это то что переменная пихается прямо в запрос. 

Да. И никакого "накладного расхода" при испльзовании echo, тем более по сравнению с другими вариантами вывода, в природе не существует - это всё бабкины сказки.
В целом - дело вкуса, можете вообще heredoc использовать. Я предпочитаю второй способ,  в частности: 
1) редактор понимает стили и форматирование
2) редактор понимает открытие/закрытие тегов
3) редактор умеет фолдинг хтмл кода, что удобно
4) меньше ошибок с кавычками и экранированием

и - мелочь, но цепляет - использовать ехо для вывода - небольшой, но накладной расход.