You don't HAVE to create prefabs and change collection later, but thats one way of doing it. The other way is to store references to the sprite collection data objects, and then use that to create sprites. (AddComponent<tk2dSprite>().SetSprite( collection, "spriteName");
How you get the sprite collection data depends very much on how you want to do it. Resources.Load will let you load sprite collections / prefabs contained in "Resources" folders. Or you could also use asset bundles (Pro only), or even texture packer import (check sample #13). There isn't a global index, as it depends very much on how you want to load these assets - if you're using Resources.Load, you could simply have a text file asset as the index somewhere that you load in, or even a C# / JS file with a hard coded / automatically generated array.