(echo)の空白付加の謎

echo ABC (ABCの後に空白は入れない)とやると、ABCとCRLFの5バイトが出力される。echo ABC>abc.txt とやると同じく5バイトがファイル abc.txt に入る。
(echo ABC) や (echo ABC)>abc.txtとカッコで囲んでも同じだ。

しかし、(echo ABC)| とパイプで次のプログラムにデータを渡すと、ABC空白CRLF と6バイトのデータが渡る。不思議だ。
(echo ABC&echo DEF)| とパイプすると、ABC空白CRLF DEF空白CRLFと合計12バイトが渡る。
もちろん、(echo ABC&echo DEF)>abc.txt だと、ABCとCRLF DEFとCRLFの合計10バイトがファイルに入る。

バグとまでは言えないかも知れないが、理解できない「仕様」だ。
表示だけなら問題ないだろうが、パイプを繋げてデータを加工する時には注意が必要である。
あ、もちろん、echo ABC| というようにカッコを使わなければパイプでも空白付加は無い。