I also agree, the only way I would use environment variables is for global configuration like HTTP_PROXY for example, otherwise I still prefer arguments, at least there is no surprises.
I agree but I also use DEBUG in my scripts to allow for on the fly debugging to occur.
I consider it a degenerate case and its only there for my own use and abuse. All it really does is redefines certain functions to be more verbose or print out debug level information.
I had one script that let you do DEBUG=somefunc and it would instrument just that one function. But to be honest it was overkill.
I was sad when I learned about this http_proxy environment variable and that things were actually starting to use it.
An http proxy setting is no more suited for an environment variable than anything else. I think it should just be a string in a file in $XDG_CONFIG_DIR/http_proxy.conf or something like that.