Почему массивы выводятся именно так?
Через запятую указываются не конкретные индексы, а задаётся интервал индексов. Первое число - начальный индекс, второе - сколько элементов надо взять. Читайте документацию.
Array["George", "Bob", "Alex"]
George - 1 index
bob - 2
alex - 3
diana 0
от 0 до 2
0 - диана, 2 - боб
ruby не паскаль, здесь интервал от какого индекса отчитывать 
вроде так
names = Array["George", "Bob", "Alex"]
names[0] = "Diana"
puts(names[0,  3])
нет никаких проблем, пока проблема не станет действительно проблемой