Поскольку <div>
является контейнером уровня блока, без семантического контекста. Это буквально контейнер, «разделительный блок», если хотите.
Проблема с использованием <table>
заключается в том, что его следует использовать для табличных данных. Это как с пуристической точки зрения (то есть просто неправильно использовать его для других целей), так и с прагматической точки зрения (браузеры, вероятно, предположят, что это своего рода 2D-таблица, и попытаются отрисовать ее соответствующим образом). Поэтому, если вы действительно хотите представить какую-то таблицу, это нормально, но фреймворки предлагают функциональность, которая применима в общем смысле, поэтому они не могут этого допустить.
Div избегают обеих этих проблем, не придавая особого значения их содержанию. Таким образом, браузеры не будут применять какой-либо специальный рендеринг, что делает их идеальной «прозрачной оболочкой» для применения соответствующих стилей CSS / Javascript.
Веб-приложения не идеальны, и часто настольное приложение будет быстрее и мощнее, но веб-приложения предлагают очень низкий барьер для входа. Пока у вас уже есть браузер (а у кого его нет), вам не нужно ничего устанавливать. Кроме того, поскольку вся логика выполняется на центральном сервере, проще отслеживать / регистрировать / исправлять / обновлять. По сути, если вы просто хотите представить информацию и ответить на простые команды, возможно, лучше развернуть что-то в виде веб-приложения с моделью клиент-сервер, чем настольные приложения - просто потому, что его легче обслуживать при прочих равных условиях.