// aqui você declarou e inicializou um ArrayList, o mesmo está vazio
private ArrayList alunos = new ArrayList ();
// na linha sequinte você declara e inicializa um array bidimensional de String
// passando o tamanho do ArrayList para inicializar a primeira dimensão
// como o ArrayList está vazio, a primeira dimensão tem tamanho 0
String [][] matriz = new String [alunos.size()][3];
Você provavelmente está chamando a função cria matriz depois de ter inserido algum valor em alunos. Como o staroski disse você ta definindo a String[][] matriz quando alunos.size() é zero, e está tentando inserir elementos quando alunos.size() > 0, isso que está causando o erro. Uma solução é você instanciar a matriz na hora que chamar o método criaMatriz, até lá deixe matriz como NULL.