この挙動の違いってどうなの?仕様どおり?
それっぽい記述は見当たらなかったんだけど。

N = 10
p ary = Array.new(N) {|i| i }
ary.each do |e|
 ary.delete_if { e == 1 }
end
p ary #=> []

p ary = Array.new(N) {|i| i }
ary.each do |e|
 ary.delete(1)
end
p ary #=> [0, 2, 3, 4, 5, 6, 7, 8, 9]