By reading the transformation values of your instances in the Object Transforms Input node and later setting them on the same instance in the Object Transforms Output node you create a feedback loop. Each time you execute the node tree you modify the object based on the values of the previous iteration and not on some default state. Only when you increase the number of instances you get “fresh” objects, which is why the instances might appear at the desired location at that time.
My suggestion is to not use the instances' Object Transforms Input but rather compute the transformation values some other way. For example by using the Index of the loop. You could also add some other objects' Object Transforms Input, e.g. the location of another cube to influence the offset of your instances. You only have to be careful if you write the transformation values that you're reading.
Edit:
I modified the previous solution to use a transformation matrix instead of a mathematical expression. A combination of a list of matrices or repeated multiplication – as AN's Matrix Math node has no Power built in – allows the recreation of something similar to Structure Synth's iteration function. A more complex node setup would also allow it to pick a different matrix (or a mixture of them) for each iteration at random, resembling the assignment of multiple definitions to the same rule in Structure Synth.
If you want to avoid the matrices you could also try to read the transformation values of an object's predecessor in the object instances list.