実行環境: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0]
以下のようなケースです。
foo[:b][0]にpushした内容が、foo[[:b][1]、foo[[:b][2]にも代入されてしまいます。 object_idが同じになっていることが原因なので、修正を加えます。
このように記述すると、それぞれの配列を個別に扱えるようになります。 pushの仕方に問題があるのではないかと色々と試行錯誤してしまうので、覚えておくと快適にコーディング出来ますね。