Строка в языках программирования это «массив символов»?
В JS cтрока является встроенным фундаментальным объектом.
Это означает, что формально это объект, но к нему может быть применен особый синтаксис. И этот синтаксис обрабатывается на уровне интерпретатора языка, а не каких-либо библиотек.
Вот тут как раз случай, когда индексный оператор [idx] является иным способом вызова метода String.charAt(idx).
Это синтаксический сахар, появившийся только в ECMA-5.
Мы можем создать массив:var arr = [2,1,3];
А можем обратиться к его элементу по индексу:arr[0];  //2
Этот же способ обращения используется и для объектов, но помимо него ещё есть точечный
И да, строка -- это массив. Ещё стоит упомянуть, что в JS не существует типа для одного символа, а все массивы (да вообще всё кроме примитивных типов) -- объекты