Hola
Bueno, el tema es un poco relativo; dependiente de opiniones, diría yo.
Sobre el br, en realidad no está mal, semánticamente lo estás usando para lo que es, aunque si no quieres usarlo y esa estructura es la qu ete gusta, siempre puedes usar CSS para generar dicho salto, por ejemplo, envolviendo la parte de antes o de después del salto y dándole display: block; o si usas floats, un clear:both.
Sobre el tener sublistas sin título antes, no hay problema con eso, solo deben ser lógicas, en el caso de que consideres los vínculos de los botones una gran lista de vínculos, las subdivisiones por área o cateogría, tienen sentido y por lo tanto son perféctamente válidos.
Por otro lado, la última opción que muestras, también es adecuada.
Si yo tuviera que elegir, de lo que nos muestras, me quedaría con algo como:
Código:
<div> --> contenedor del área (puede ser otro)
<ul> --> lista de cosas (vínculos)
<li></li> --> un bloque de vínculos en su propio ul
<li></li> --> otro bloque de vínculos en su propio ul
</ul>
</div>
Que es parecido algo entre la primera y la segunda opción y algo que mencionabas. Luego las separaciones visuales, las haría con css y trataría de evitar divs en la lista a menos que fuera totalmente inevitable.
Felicidad