山本です。

もう今日はやらないつもりでしたが、思いついたことがあったので試して
みたところ、かなり単純化できました。

  p ENV
  $0 = $0 # test/unit/ui/console/testrunner.rb (HEAD) modifies $0
  p ENV

パッチを当てると、HEAD も ruby_1_8 も二番目の p ENV が { , , , , } になります。

ruby_1_8 でエラーにならなかったのは、test/unit/ui/console/testrunner.rb で
$0 を変更していなかったからでした。

そして $0= の実装である set_arg0 には 

    ruby_setenv("", NULL); /* duplicate environ vars */

なんて行があるので、どうも setenv の独自実装と $0= は依存している感じですね。