Básicamente, mysql tiene una longitud de fila variable, siempre que no se cambie por nivel de tabla. Por lo tanto, las columnas vacías no usarán ningún espacio (bueno, casi).
Pero con blobs o columnas de texto, podría ser mejor normalizarlos, ya que pueden tener grandes datos para almacenar y esto debe leerse / omitirse cada vez que se escanea una tabla. Incluso si la columna no está en el conjunto de resultados y está realizando consultas fuera de un índice, llevará su tiempo en una gran cantidad de filas.
Como buena práctica, creo que será rápido colocar todas las columnas administrativas y de uso frecuente en una tabla y normalizar el resto. Un tipo de diseño "vertical" como en su segundo ejemplo será complejo de leer y tan pronto como trabaje con tablas temporales, tarde o temprano tendrá problemas de rendimiento.