When designing a web control, the old way of doing this you would specific the key and script. Because of this, authors of web controls may overwrite each other's scripts because they used the same key without realizing it. I believe Microsoft thinks this to be a good approach to prevent this from occuring. In a web control, you can specify Me.GetType(), or this.GetType() in C#, to identify the control in which this script is to be keyed with so multiple key values with the same value can exist on the page, but registered for different control types. In a page, you can just use Me.GetType() if you are registering a script for a page but not a specific control.
This may not be the case, but I believe it to be true (True in Visual Basic).
HTH,
Mythran