A possible solution could be to no longer support dynamic variables. In our running example, we'd then have to add a 'something' field to the node_type database table. However, for a number of use-cases this might be impractical. Then again, it might also prevent that people abuse the variables table as an easy storage system.
Where do we use dynamic variables in core except for the node type settings storage (which (hopefully) gets tackled in http://drupal.org/ node/111715).
1. For convenience, we want a central place to define a variable's default value.
2. Out of necessity, we want a mechanism to let the locale system translate variables that have dynamic content shown on the UIs (i.e. the footer message).
1 is more or less a side effect of 2 and has not been the initial motivation. Konstantin Käfer – http://kkaefer.com/