Hi Nathan,
I also don't fully understand: as the naming convention indicates, SUPPORTS_DEFINEPROP is a constant: it's initialized to a constant boolean immediately when the file is loaded. So in normal operation, it will only be executed once.
My guess is that, while debugging with firebug, you are probably reloading the script often (i.e. whenever you refresh the page), and reloading the script will cause the feature test to be re-executed. I guess your trick works because your script now caches the value in a property of the global object, which probably does not get reset each time you reload the script.
While I understand that the firebug experience with this behavior is annoying, I'm not sure whether caching things in the global object is the right solution to this problem. Also, it seems that other feature tests, like 'supportsGOPD()' and 'supportsDP()' would require similar workarounds.
If anyone has advice on how other JS libraries cope with such reloading-during-debugging issues, I'd love to hear it.
Cheers,
Tom