Hm. I just loaded csh (which has a 'printenv' builtin) and doing 'printenv > file' produces yet another output - almost identical to the external printenv as run by bash, but with a handful of others. But running the external printenv *with* csh produces an identical file to the csh builtin.
Dunno where to go with any of this, but I was just curious. I've always used the 'set' builtin and had never tried 'printenv'.