次のように、ARGF.each_byte が nil を返すのは
% : | ruby -e 'p ARGF.each_byte {}'
nil

次のように IO#each_byte が self を返すのと異なるのではないでしょうか。 

% : | ruby -e 'p STDIN.each_byte {}'
#<IO:0x401c41f4>
-- 
[田中 哲][たなか あきら][Tanaka Akira]