Basically, the scales were something that came from an earlier AC version (not sure exactly when), this was so you could just select the scale in the plot dialog instead of typing the drawing units = paper units as per custom scales. Now in 2008 it uses those scales for the Annotative feature as well. Because of this it "displays" all the saved scales in the status bar's annotation scale pop-up. So every time you open a drawing, it reads all the saved scales to that pop-up.
Then, whenever you copy-n-paste something from another drawing, or insert a block from a file, or if you xref a drawing into the current, the scales from that drawing is imported into the current as well. Now before SP1 it used to do this every time you open the drawing - i.e. it made a copy of all the scales & added to the current, then when you opened it again, it did the same thing.
What you ended up with is a list of scales (usually with a XREF prefix, or several XREF prefixes) of a few thousand scales. Then when 2008 tries to display them in that Annotation Scale pop-up it takes a hell of a long time, and could cause a crash since it's using up RAM and CPU power. After installing SP1 this "doesn't happen" ... sort of ... it still imports those scales, but only does it once (i.e. it checks if the scale already exists instead of just making a copy without checking). It checks only the scale's name, so if you've got 2 scales with the same values for drawing / paper units but different names it will see them as 2 different scales so import even though a similar scale is already there.
So SP1 solves the problem for any new drawings, i.e. it doesn't increase the scale list with those XREF prefixed scales anymore. Unfortunately, it also doesn't delete these XREF prefixed scales - this you have to do manually or have some type of script / lisp to remove them. Also you need to remove these from any xrefs attached / overlaid into the current drawing, otherwise those XREF prefixed scales are still imported as they're seen as "new" scales with a differing name.
The normal way to do this would be to use SCALELISTEDIT, but unfortunately if you've got thousands of scales you'll get some sort of memory error since it's trying to display them all in a dialog. Then you could use the commandline version of SCALELISTEDIT by prefixing the command with a minus sign - thus it doesn't load all the scales into a dialog, so you won't get that RAM error.
Now the "simplest" solution would be to use the Reset option of -SCALELISTEDIT. But unfortunately it uses only the ACAD default scales. So if you've got some custom scales you've setup yourself (this happens nearly always if you're using metric) these dissapear if not used. Therefore my ScaleListUtils in a previous post.
You need to clean the drawings from the bottom-up, i.e. the most nested xref first. Otherwise you clean the drawing, then when you open it again it still loads the XREF prefixes scales from any xrefs not cleaned yet.
A very nice utility for doing this cleanup in a batch is the CleanupScales (from AutoDesk http://usa.autodesk.com/adsk/servlet...linkID=9240658). Basically you setup a template (that's a DWT file) with the scales you want. Then run this utility, select which drawings you want to clean, pick the DWT as the template, and set how many differences are allowed from the template before actually cleaning the DWG's.
If you're simply doing some research about this you may also try to search these forums for the scalelist keyword. There's quite a few issues regading this.