Yes, you've suggested that before in the forums. However it doesn't work.
Code:
local CTg = getfenv(0)
for i = 1,7 do
CTg["ChatFrame"..i]:SetScript("OnShow", function(self) self.Hide() end)
CTg["ChatFrame"..i.."Tab"]:SetScript("OnShow", function(self) self.Hide() end)
CTg["ChatFrame"..i.."TabDockRegion"]:SetScript("OnShow", function(self) self.Hide() end)
end
The code above generates an error attempting to find 'this' in a non-table object.
Theoretically, I see your point, and yes it should work, but Blizz must handle the ChatFrames in a unique way.