Единственное существенное различие, которое я знаю, заключается в обработке explicit конструкторов:
struct foo
{
explicit foo(int);
};
foo f0 {42}; // OK
foo f1 = {42}; // не допускается
Это похоже на "традиционную" инициализацию:
foo f0 (42); // OK
foo f1 = 42; // не допускается
Кроме того, в C ++ 11 есть дефект (см. CWG 1270), который допускает исключение фигурных скобок только для формы T a = {something}
struct aggr
{
int arr[5];
};
aggr a0 = {1,2,3,4,5}; // OK
aggr a1 {1,2,3,4,5}; // не допускается