Всё-таки вопрос не верно сформулирован. Вы спрашиваете "Как лучше? С помощью HTML/CSS или JS?". Юмор в том, что это не какие-то "противоположности". JavaScript повсеместно используют СОВМЕСТНО с HTML и CSS.
Предположу, что вы имели ввиду стандартные html-элементы и блоки, которые имитируют их поведение. Первые создаются при помощи обычной разметки и стилей, вторые же - при помощи JavaScript-логики, которая и позволяет им вести себя так.
Всё дело, на самом деле, во вкусах. Одни просто хотят так делать по каким-либо причинам, другие просто привыкли.
В пользу второго подхода приведу несколько аргументов:
1. Стандартные элементы имеют некоторые ограничения, которые видимо не всем нравятся.
2. Стандартные элементы могут вести себя по разному в разных браузерах. Пример: св-во placeholder у input. Созданные же с помощью "JavaScript-магии" элементы ведут себя ровно так, как вы заколдуете.