Как-то так:
$col = 1;
$html = ["", "", ""];
while ($arSect = $rsSect->GetNext()) {
$html[$col] .= '<div>' . $arSect['NAME'] . '</div>';
$col = $col == 2 ? 0 : $col + 1;
}
echo( $html[0] . $html[1] . $html[2] );
Проблема в том, что, перебирая данные последовательно, вы не имеете представления об их длине. Поэтому вы заранее не можете посчитать, какой длины будет колонка. Выход: формировать все три колонки на сервере.
Если вам нужно последовательно выводить данные в каждой колонке, то принцип тот же. Только нужно все данные загнать в большой массив, потом по его длине понять длину колонки, и далее выводить массив последовательно, в нужных местах вставляя разбиение.