Один из способов выполнить чередование, а также гарантировать, какой массив является самым большим для метода zip, - это заполнить один из массивов nil
до другого размера массива. Таким образом, вы также гарантируете, какой элемент какого массива будет на первой позиции:
preferred_arr = ["Cat", "Dog", "Mouse"]
other_arr = ["and","&","are","great","friends"]
preferred_arr << nil while preferred_arr.length < other_arr.length
preferred_arr.zip(other_arr).flatten.compact
#=> ["Cat", "and", "Dog", "&", "Mouse", "are", "great", "friends"]