Como você pode colocar a notação pontilhada "parent.child" e não precisar colocar parent ["child"], que também é válido e útil, eu diria que ambas as formas são tecnicamente aceitáveis. Todos os analisadores devem fazer os dois lados muito bem. Se o seu analisador não precisar de aspas nas teclas, provavelmente é melhor não colocá-las (economiza espaço). Faz sentido chamá-las de strings, porque é isso que elas são, e como os colchetes oferecem a capacidade de usar valores para chaves, essencialmente faz todo o sentido não usar. Em Json você pode colocar ...
>var keyName = "someKey";
>var obj = {[keyName]:"someValue"};
>obj
Object {someKey: "someValue"}
muito bem, sem problemas, se você precisar de um valor para uma chave e nenhum citado não funcionar, por isso, se não funcionar, você não poderá, portanto, não precisará "não precisa de aspas nas chaves". Mesmo que seja certo dizer que são tecnicamente cordas. A lógica e o uso argumentam o contrário. Nem produz oficialmente o Objeto {"someKey": "someValue"} para obj em nosso exemplo, executado no console de qualquer navegador.