原です。

> それは,引数リストと配列式では(確かに似ているが)いろいろと微
> 妙な違いがあることです.ちょっとあげてみると

それで思い出したんですが、イテレータの引数はどうなってるんで
しょう。

a = {"1"=>"2", "3"=>"4"}

のとき、

a.each { |x,y| print [x,y].join(","), "\n" }
a.each { |*x|  print x.join(","), "\n" }
a.each { |x|   print x.join(","), "\n" }

は、同じ動作をしますね。3番めがちゃんと動くのが不思議。

それから、yield は *x というパラメータは取らないですね。

def baz(x)
  yield x
end

baz([0,1,2]) { |x|
  print x.join(","), "\n"
}

において、yield *x あるいは yield(*x) とするとそれぞれ
違うエラーがでます。