А стоп, не понял вопрос сначала. Ты спрашиваешь почему ${} и {}?
Потому что ${} - это синтаксис интерполяции, т.е. мы внутрь инструкции вставляем живые значения, а {} - это просто декларация директивы
< ${'foo'}
{a} - {b}
Тоже самое на классическом синтаксисе
{< ${'foo'}}
{a} - {b}
{/}
А разный синтаксис по 2-м причинам:
1) Визуальное отличие, чтобы не запутаться
2) Чтобы не было конфликтов с использованием {} блоков внутри директивы, например
/// <div class="foo" bla="{a: 1, b: 2}"></div>
< .foo bla = {a: 1, b: 2}