I think both views are valid in different situations.
For instance, in the project I am currently working on, I use one sprite object with multiple different animation frames to represent one general type of object. When I need an object with a specific animation frame, I create it from the initial object then set the frame and some other variables. I also set a global variable, named for that specific item, to the new object's UID. This way, I can have one set of events for that general object type, then select the specific object using the global UID variable.
This project, though, has a predetermined number of objects and has a very specific game path. Without using the UID and the general object type, the game logic would be a monster.
On the other hand, in a game with a lot of random objects with no predetermined number of objects or specific game path, I can see that using the UID would not necessarily be useful, and newt's use of an index would be the way to go.
I think it just depends on the situation.
Still, this has been an excellent debate. Everyone was able to give their opinions without getting flamed, and that says a lot about this community.