Просто прочитайте что-нибудь об этом в документации, не уверен, что это применимо и к тэгам {% block ... %}.
Управление пробелами Twig
{% set value = 'no spaces' %}
{#- No leading/trailing whitespace -#}
{%- if true -%}
{{- value -}}
{%- endif -%}
{# output 'no spaces' #}
Здесь также показан другой пример, который выравнивает пробелы перед переменной, но не делает это в конце - поэтому эффект только с одной стороны.
{% set value = 'no spaces' %}
<li> {{- value }} </li>
{# outputs '<li>no spaces </li>' #}
В приведенном выше примере показан модификатор управления пробелами по умолчанию и как его можно использовать для удаления пробелов вокруг тегов. Затрагивание пространства будет потреблять все пробелы для этой стороны тега. Можно использовать обрезку пробелов на одной стороне тега
Итак, я думаю, что разница в ваших приведенных выше примерах заключается в том, что в первом блоке body после запуска блока будет пробел. Во втором примере body - нет ни одного после запуска блока.
Просто прочитайте запись документации, чтобы узнать, как она работает.
ИЗМЕНИТЬ
Простой пример для демонстрации примера в документе:
{% set value = 'NO space in source code after/before "value"' %}
<li> {{- value -}} </li>
...
выходы в Firebug в разметке HTML:
В то время как этот
{% set value = 'space in source code after "value"' %}
<li> {{- value }} </li>
...
Выходы:
Обратите внимание на пробел между "значением" и закрытием </li> во втором примере. Таким образом, минус - стирает/обрезает пробел либо до, после, либо с обеих сторон, например. переменная.