We've always been conservative when it comes to exposing Globals for use by extension packages or subscriber extensions, and perhaps too conservative. We're considering being more proactive wth our global architecture, and we're discussing several changes to our current practice, in order to create a new set of best practices.
Topics we're discussing include "microglobals" that all share a common interface, minimizing the call tree, and when and how much we should use the internal API versioning that Salesforce provides.
Do you already have a set of best practices for designing and maintaining globals that works well for your packages and that you could share?