原です。

>Yuyaです。
>
>ちょっと遊んでみました。
>きれいかどうかはわかりませんが、とりあえず短いです。:-)
>
>---------------------------------------------------------------------
>f1 = open(ARGV.shift)
>f2 = open(ARGV.shift)
>
>until (line = [f1.gets, f2.gets]).compact.empty?
>  printf("%-35s | %-35s\n", (line[0] || "").chomp, (line[1] || "").chomp)
>end

うーん、なるほど!きれいです。

compact.empty? のあたりは Enumerable#any? が使えそうですね。

読み切った IO に対してさらに gets しても大丈夫でしたっけ?