It sounds like your over-complicating it a bit? It is a change coming from something like C or Java to Construct. A lot of the concepts can be modeled the same, but the way of thinking of attacking a problem has be a bit different.
For instance, to attach an array to a sprite you could create a container containing the sprite and the array. Everytime the sprite is created, the array will be created with specific values to that set as well.
As Codah suggested, you could add instance variables to the sprite.
More importantly though,the sprites hold their own values that don't need to be created for these. Like, if you want to reference the X coordinate of planet, in any of the condition or action statements, you would just use planet.X and likewise planet.Y. If you want to create a new object, use the system condition "create object" with whichever X and Y coordinate you want to use, or however you determine them.