Por que a inicialização da lista (usando chaves) é melhor que as alternativas?

MyClass a1 {a};     // clearer and less error-prone than the other three
MyClass a2 = {a};
MyClass a3 = a;
MyClass a4(a);

Por quê?

Não consegui encontrar uma resposta em SO, então deixe-me responder a minha própria pergunta.