Потому что вам дужно выводить данные в определенном формате (шаблоне)
Например шаблон модального окна с использованием шаблонизатора underscore может выглядеть так:
<div>
   <div class="title"><%= title %></div>
   <div class="content"><%= content %></div>
   <div class="buttns">
       <% for (var i = 0; i < buttons.length; i++) { %>
            <button><%= button[i].text %></button>
       <% } %>
   </div>
</div>
Хочу получить верстку модального окна с 2 кнопками, заголовком и контентом:
_.template(modalTpl)({
      title: "Заголовок",
      content: "Контент",
      buttons: [{text: "Да"}, {text: "Нет"}]
   });
Таким образом мы уменьшаем в коде прямую работу с домом. Это удобно, особенно когда есть много похожих операций.