ST badly needs a more granular exclusion system that allows individual package files (snippets, completions, themes etc.) to be ignored. As it stands, you can change ST to fit you perfectly but it's far easier to change yourself to fit ST. That's an undesirable state of affairs for all but the most flexible of programmers (i.e. not many of us).
Take, for a simple example, the default C++ snippets. I prefer my opening braces on the same line as the control statement so I can either delete the snippets, remake them in User and then have duplicates respawn at a later update (coincidentally also my least favourite part of System Shock 2) or I can edit the snippets and have them overwritten. Stuff like that kinda defeats the whole point of having a first rate customisation system.
It's not just default snippets either though. If I want to replace my default PHP completions list with the excellent AndyPHP completions package then I'll end up with duplicates every time the default completions return. Third party packages also often contain menu items that I don't necessarily want or that I'd prefer to edit in some way but once again there's only the choice between later duplication and later deletion.
Basically, although the customisation system is great and very, well, customisable, implementation issues are wasting a lot of its value for the hackers who really want to get down and dirty with ST.