a=[[1,2],[3]]
b=[[2,3],[5]]
def my_add a1, a2
a1.zip(a2).map{|s1, s2|
s1.is_a?(Array) ? my_add(s1, s2) : s1 + s2
}
end
p my_add a, b
#=>[[3, 5], [8]]
Но вы должны быть осторожны, чтобы всегда сопоставлять массив с массивом и целое число с целым числом.