undefined - это когда обращайтесь к тому чего нет. обращение к не существующему объекту, переменной..
все дело в этой строчке: document.write(b1[1][0][1]+'<br>');
должно быть: b1[
i][0][1], т.е. при первом цикле этого (b1[
1][0][1]) элемента массива еще нет, т.к. i еще равен нулю, а вы обращайтесь уже к еденице.
при втором подходе уже существует этот элемент (b1[
1][0][1]) т.к. i = 1 и обращение идет к 1 элементу массива
ну и при третьем подходе также есть элемент массива b1[
1][0][1]
вот посмотрите, я немного исправил:
var a1 = document.getElementsByTagName('p')[0].innerHTML;
a1 = a1.replace(/^\s*?\n\s*|\s*?\n\s*$/img,'').split(/\s*\n\s*/).join('\n');
var b1=a1.split(/\sПравка\sip\sinf/);
for (var i=0;i<b1.length-1; i++)
{
b1[i]= b1[i].split(/\d{2}\.\d{2}\.\d{2}\s\d{2}\:\d{2}\s/);
//i = 0 ["• Самашки - Вайнах 1:4↵Берд - Лидер 2:3↵ЧГУ - Низа… Мартан 2:1↵ЧГПИ - Даймохк 1:1↵Марта - Сунжа 2:1 ", "Нохчо"]
//i = 1 ["• Самашки-Вайнах 1:3↵Берд-Лидер 0:2↵ЧГУ-Низам 2:2↵…ртак-Мартан 0:0↵ЧГПИ-Даймохк 1:5↵Марта-Сунжа 1:2 ", "ФК Орга"]
//i = 2 ["• Самашки-Вайнах 1-1↵Берд-Лидер 1-3↵ЧГУ-Низам 1-2↵…ртак-Мартан 2-1↵ЧГПИ-Даймохк 1-3↵Марта-Сунжа 2-1↵", "anzor95"]
b1[i][0]=b1[i][0].split(/\n/);
/*
i = 0, b1[i][0]=
0: "• Самашки - Вайнах 1:4"
1: "Берд - Лидер 2:3"
2: "ЧГУ - Низам 1:2"
3: "Родник - Авангард 2:1"
4: "Тайфун - Динамо 0:2"
5: "Казбек-Горец 0:2"
6: "Спартак - Мартан 2:1"
7: "ЧГПИ - Даймохк 1:1"
8: "Марта - Сунжа 2:1 "
i = 1, b1[i][0]=
0: "• Самашки-Вайнах 1:3"
1: "Берд-Лидер 0:2"
2: "ЧГУ-Низам 2:2"
3: "Родник-Авангард 1:2"
4: "Тайфун-Динамо 1:3"
5: "Казбек-Горец 0:4"
6: "Спартак-Мартан 0:0"
7: "ЧГПИ-Даймохк 1:5"
8: "Марта-Сунжа 1:2 "
...
*/
console.log('i = ' + i + ' ----------------');
for (var k =0; k < b1[i][0].length - 1; k++)
console.log(b1[i][0][k]);
}