Ну, есть Array.delete . Однако он возвращает то, что удалено (или ноль, если ничего не удалено), что выглядит неуклюже. Но он доставляет и не терпит неудачу на нестроковых элементах:
ar = ['a', '', 2, 3, '']
p ar.delete('') #=> ""
p ar #=> ["a", 2, 3]