If you only care about positions, you could just store the transform.position in an array at the same index as the gameobject in your other array and assign that back when resetting the objects. If you need scale and rotation as well, I would probably build some sort of small custom struct to store all the information you need and then save that in the array.
Or if you want it a bit more fancy, you could always attach a small script to the gameobjects that stores the values and then use some sort of custom save() and reset() function that sets and reassigns them.