Aviso: He soltado un texto bastante grande. El principio es pura teoría de programación (explicando el por qué los 
Array dan problemas como constantes) y al final te he dado una posible solución a tu problema.
Teoría
El problema de poner los 
Array como constantes es que se pueden modificar igualmente. Esto se debe a que, cuando asignamos un array a una variable o a una constante, ésta almacena el 
Array por referencia, no por valor. Me explicaré un poco mejor:
Cuando creas una variable de tipo 
int, por ejemplo, haces:
Código ActionScript :
var entero:int = 3;
Y esa variable se almacena por valor. Para que me entiendas, en algún sitio de la memoria se escribe 
entero vale 3. Si tú ahora haces:
Código ActionScript :
var otro:int = entero;
entero = 5;
Se guardaría 
otro vale 3 y después 
entero vale 5. Por tanto, lo único que se guarda es el valor del entero en cada momento. No obstante, si cambias el valor, estás modificando la variable. Éste es el motivo por el que, si declaramos un 
int como constante, no podamos modificarlo (ya que modificar el valor modifica el 
int).
Por el contrario, cuando escribimos el código:
Código ActionScript :
var lista:Array = new Array("a", "b", "c");Lo que se hace es lo siguiente:
- Se guarda el Array con los valores "a", "b" y "c" en un lugar de la memoria (imaginemos que se guarda en la dirección número 100).
 - Se guarda, en otro lugar de la memoria, lista es el Array de la dirección 100.
 
Si tú ahora haces:
Código ActionScript :
var otra:Array = lista;
lista = new Array("d", "e");Se guarda 
otra es el Array de la dirección 100 (ya que es la dirección de lista) y después se crea un 
Array nuevo en otro lugar (por ejemplo, en la dirección 200) y se guarda 
lista es el Array de la dirección 200.
En este caso, modificar (añadir, quitar o cambiar) los elementos del 
Array no modifica el 
Array en sí. Quiero decir, si tú escribes:
Código ActionScript :
otra.push("z");Lo que se modifica es "el 
Array de la dirección 100", pero no "otra". Sigue siendo válido que 
otra es el Array de la dirección 100, como ya era antes, por eso no se considera que "otra" ha sido modificado.
En otras palabras, si tú declaras un 
Array como constante, como en:
Código ActionScript :
public const lista:Array = new Array("a", "b", "c");No podrás hacer lista=new Array() (ya que eso modificaría la dirección de "lista"), pero sí podrás hacer lista.push("d") (ya que "lista" seguirá siendo el mismo 
Array, del cual sólo has modificado un elemento).
Posible solución
Lo único que se me ocurre es que encapsules el array. Puedes declararlo como privado y hacer que éste sólo sea accesible mediante un método que devuelva una copia de él. Por ejemplo:
Código ActionScript :
private const lista:Array = ["a", "b", "c"];
// ...
public function getLista():Array {
    return this.lista.slice(); // el método slice lo utilizamos para crear una copia del array
}
De esta manera el programa nunca podrá modificar el 
Array de tu clase, ya que para las otras clases tu 
Array es privado. Sólo podrá modificar las copias de éste