Use range
function, it has step
argument:
<div class="item-container">
{% for i in range(0, items|length-1, 3) %}
<ul>
<li>{{ items[i] }}</li>
<li>{{ items[i+1]|default }}</li>
<li>{{ items[i+2]|default }}</li>
</ul>
{% endfor %}
</div>
Instead of default
filter you may use {% if items[i+1] is defined %}
.