Hola:
Los nombres de los controles son simplemente "texto", así que "categorias[0]" es distinto a "categorias[]"... si tienes una razón lógica para poner dentro de los corchetes el índice (no suele suceder), pues entonces cada control será distinto. y lo de "length" para conseguir el tamaño no tiene sentido...
Saludos