Sí 
Adler, como has dicho funciona, pero si inicializas 
arra con 
arra = [0] ya le estás diciendo que el primer elemento es cero. También decirte que la sintaxis correcta es 
arra.push(elemento) y no 
arra.push = (elemento) como has escrito (¿te funcionó? 

) 
En este caso no han hecho falta comillas en javascript, porque son números. Pero en caso de ser Strings habría que tener cuidado con las comillas, y si los registros de la BD pudieran contener comillas también, escaparlas con \ o eliminarlas. 
Creo que la forma más fácil de hacerlo (consimiendo menos recursos) es eliminando el bucle javascript y construyendo un string en PHP para "pegarlo" en el código javascript
: 
 Código PHP:
    <?
include("conexion.php");
 
$res = mysql_query("select * from categorias", $link);
$ristra = "";                                        // aquí irán todos los elementos para el array javascript
while( $row = mysql_fetch_assoc($res) )
    $ristra .= "'" . $row["nombre"] . "', ";                    // añadimos un elemento a la ristra con una coma para el siguiente elemento
$ristra = ereg_replace(", $", "", $ristra);            // quitamos la coma final residual
 
?>
 
 
<script type="text/javascript">
<!--
 
var miArr = [<?=$ristra?>];      // Saldrá en el código fuente generado lo siguiente:
// var miArr = ['útiles', 'higiene personal', 'hábitos diarios', 'electrónica', 'cuerpo', 'vestimenta'];
 
-->
</script>   
  
Saludos.