Usual process i follow is that, we switch off the tag or extension, if it is not used. This way the tags and extensions wont get activated in any environment including production.
If you commented out the code, that also works per my understanding. But switching off is very easy, so i usually prefer that instead of manual comment out.
Wondering how the tag worked, even if those are commented out.
From Tealium IQ perspective, i think it works this way. Tealium IQ allows to publish changes, based on the versions saved or earlier published to dev or stage. It can include specific tags or extensions or data layers. So even if you have made additional changes on top of the previous version published to staging. You can always go back and load the previous version and publish those individually to the production environment. You may already know this, but just thought of sharing:). Please find a screenshot on loading speicifc versions.
Hope this helps.
I would recommend using the publish locations for Tags to stop them being published to unwanted environments.
This functionality will be coming, very soon, to extensions as well.
I'm not sure of the exact timescale, but I would imagine this quarter.
Current dev resources have been focused onto the GDPR preparations.
I will try and update you when we know more.