1. Surprise

irb> a = Array.new(5, [])
#=> [[], [], [], [], []]
irb> a.first << ?c
#=> ["c"]
irb> a
#=> [["c"], ["c"], ["c"], ["c"], ["c"]]
irb> a.map(&:object_id)
#=> [69987008691280,
#    69987008691280,
#    69987008691280,
#    69987008691280,
#    69987008691280]
irb> a.map(&:object_id).uniq!
#=> [69987008691280]

2. Solution

irb> a = Array.new(5){[]}
#=> [[], [], [], [], []]
irb> a.first << ?c
#=> ["c"]
irb> a
#=> [["c"], [], [], [], []]
irb> a.map(&:object_id)
#=> [69987008612720,
#    69987008612700,
#    69987008612680,
#    69987008612660,
#    69987008612640]
irb> a.map(&:object_id).uniq!
#=> nil

3. How it works

irb> b = []
#=> []
irb> a = Array.new(5){b}
#=> [[], [], [], [], []]
irb(main):010:0> a.first << ?c
#=> ["c"]
irb> a
#=> [["c"], ["c"], ["c"], ["c"], ["c"]]
irb> a.map(&:object_id)
#=> [69987008484780,
#    69987008484780,
#    69987008484780,
#    69987008484780,
#    69987008484780]
irb> a.map(&:object_id).uniq!
#=> [69987008484780]