元の配列に4が1つしかなくてソート済みならpartitionでいいんじゃない
numbers.partition{|e| e < 4}

そうじゃないなら素直にやるしかないかと
i = numbsers.find_index(4)
numbers[0...i]
numbers[i..-1]

もしくは
numbers.take_while{|e|e != 4}
numbers.drop_while{|e|e != 4}