What you do is creating a new sub-tree per Transform and that is required if you want to attach individual variables to GeometryInstance or Materials. This is just a big expanded scene.
You might have reused the Geometry nodes, but the acceleration structure is at GeometryGroup level and will be created for each of the Geometries.
That’s not “instancing” in the sense of reusing the whole (identical) sub-tree.
If you only create the Group->GeometryGroup->GeometryInstance(+Material)->Geometry exactly once (for each different sub-tree) and then attach that one top level Group to individual Transform nodes which place that in the world, that would be real instancing.
Simple car example: A wheel group is built of rim and tire. You need four identical wheels. Create the wheel sub-tree once. Put the wheel group under four Transforms which place them on your car.
In your picture, if SceneObejct 1 and 2 are the same, remove SceneObject 2 and let Transform 2 point to Group 1.
That scene would be a lot smaller if the sub-tree is reused often. There would also only be the acceleration structures for the sub-tree once.
BUT(!) that is exactly the case where you can’t identify individual GeometryInstances with variables anymore, because there is only that one sub-tree and Transforms do not hold variables, other than their transform matrix, and that is why I filed that request for enhancement.
You could put yourself into trouble and try to identify the transforms as a workaround, but that would be clumsy and slower than a simple ID. If your scene is not too huge, just keep using your method until there is a better solution.
I don’t know for what purpose you need the ID, maybe there are other ways to solve your requirements.