O melhor que posso encontrar é
$ echo foo bar baz quux xyxxy thud | tr ' ' '\n' \
| perl -lne '$x.=" $_"; if(!($. % 2)){print $x; $x="";} END{print $x if $x}'
foo bar
baz quux
xyxxy thud
ou o indiscutivelmente mais elegante, embora não mais curto
$ echo foo bar baz quux xyxxy thud bang| tr ' ' '\n' \
| perl -ne 'chomp; print "$_ "; print "\n" if (!($. % 3)); END {print "\n"}'
foo bar baz
quux xyxxy thud
bang
Eficiência?
$ time perl -e 'print "foo\n" for (1..10000)' | xargs -n 3 > /dev/null
real 0m1.330s
user 0m0.500s
sys 0m0.830s
$ time perl -e 'print "foo\n" for (1..10000)' \
| perl -ne 'chomp; print "$_ "; print "\n" if (!($. % 3)); END {print "\n"}' \
> /dev/null
real 0m0.060s
user 0m0.030s
sys 0m0.030s
Inicialmente, eu tentei o 1000000, mas me cansei de esperar pelos xargs, embora o perl tenha sido 1.45s
(Temporizações feitas no andLinux no Vista-32 em um AMD-64 x2 5600+ 2.8GHz com 4GB de RAM)