Предполагая, что вам все равно, какое значение будет утеряно, просто запустите их в хеш (который имеет уникальные ключи и, следовательно, вероятно, является правильным классом сбора для этого случая):
h = {}
values.each{|i|i.each{|k,v|h[k] = v}}
puts h # => {"a"=>"4", "b"=>"1"}
... или если вы хотите первый из каждого ключа:
h = {}
values.each{|i|i.each{|k,v|h[k] = v unless h[k]}}
Если вы хотите вернуться к массиву:
h.each{|k,v|a << {k=>v}}