Zasadniczo mysql ma zmienną długość wiersza, o ile nie zmienia się na poziomie na tabelę. W ten sposób puste kolumny nie zajmą miejsca (no, prawie).
Jednak w przypadku obiektów blob lub kolumn tekstowych lepiej jest je znormalizować, ponieważ mogą one zawierać duże dane do przechowywania i należy je czytać / pomijać za każdym razem, gdy tabela jest skanowana. Nawet jeśli kolumna nie znajduje się w zestawie wyników i wykonujesz zapytania poza indeksem, zajmie to trochę czasu na dużej liczbie wierszy.
Uważam, że dobrą praktyką będzie umieszczenie wszystkich administracyjnych i często używanych kolumn w jednej tabeli i normalizacja wszystkich pozostałych. Rodzaj „pionowego” projektu, jak w drugim przykładzie, będzie skomplikowany do odczytania i jak tylko zaczniesz pracować z tabelami tymczasowymi, prędzej czy później napotkasz problemy z wydajnością.