You could potentially be causing problems by editing the iterator in your for loop setQuestionIndex().
Try doing it without, like:
void setQuestionIndex()
{
int questionIterator = 0;
for (int i = 0; i < questionNumbersChoosen.Length; i++) {
int questionNum = Random.Range (0, questions.Length);
if (!isContain (questionNumbersChoosen, questionNum))
{
questionNumbersChoosen [questionIterator ] = questionNum;
questionIterator ++;
}
}
}
That is unless I'm missing the reason why you're doing that?