はじめまして。HORI といいます。
さっそくですが、1つ質問をさせて下さい。

--- test1.rb  ---

a = [[1],[1],[1]]

p a      # => [[1],[1],[1]]

a.each_with_index do |b,i|
    b << 1
end

p a

--- ruby test1.rb の実行結果 ---

[[1], [1], [1]]
[[1, 1], [1, 1], [1, 1]]

--- test2.rb ---

a = [[1]]*3

p a      # => [[1],[1],[1]]

a.each_with_index do |b,i|
    b << 1
end

p a

--- ruby test2.rb の実行結果 ---

[[1], [1], [1]]
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]

--- ruby -v の実行結果 ---

ruby 1.4.4 (2000-04-14) [i386-cygwin]



私としては、test1.rbと同様の振る舞いを求めてtest2.rbをかいたつもりなのですが
・・・

以上