Hola, yo también tuve esa misma duda, y resulta que una declaración con const protege que un valor se sobreescriba, y en los ejemplos anteriores donde la variable era un valor único, al tratar de asignarle otro valor el const la protegía de que ese valor sea sobreescrito; sin embargo en un array sí que se puede insertar un valor en el array, ya que no está sobreescribiéndolo como tal solo "empujándolo". También funciona de esa misma manera si declaramos un const que contenga un objeto, no puedes reasignar ese objeto, pero sí puedes alterar su valor usando una propiedad propia de ese objeto.
const MY_ARRAY = [];
// es posible empujar elementos en el array
MY_ARRAY.push('A'); // ["A"]
// Sin embargo, asignar un nuevo array a la variable lanza error
MY_ARRAY = ['B']
// const tambien funciona en objetos
const MY_OBJECT = {'key': 'value'};
// Intentando sobrescribir el objeto nos lanza un error
MY_OBJECT = {'OTHER_KEY': 'value'};
// Sin embargo, los object keys no estan protegidas,
// por lo que la siguiente sentencia se ejecutara sin problema
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() para hacer un objeto inmutable