Normalmente se dice que es una mala idea por esto:
Código PHP:
<script type="text/javascript">
Array.prototype.algo=function(){return 'bla';}
var a=['a','b','c'];
for(i in a){
alert(a[i]);
}
</script>
El haber modificado el prototipo trae una inclusión "inesperada" dentro del bucle.
Pero para solventar el problema podemos usar algo como esto:
Código PHP:
<script type="text/javascript">
Array.prototype.algo=function(){return 'bla';}
var a=['a','b','c'];
for(i in a){
if(a.propertyIsEnumerable(i))
alert(a[i]);
}
</script>
Así que mi conclusión es la misma que la del amigo zerokilled: mientras sepas lo que estás haciendo, no hay ningún problema

Lo malo es que propertyIsEnumerable no funciona igual en todos los navegadores (Ópera, por ejemplo). Pero esto, en cambio, funciona siempre:
Código PHP:
<script type="text/javascript">
Array.prototype.algo=function(){return 'bla';}
var a=['a','b','c'];
for(i in a){
if(a.hasOwnProperty(i))
alert(a[i]);
}
</script>