Node is not useless, because it contains translation matrix. Based on it, some of the vertices of batch mesh will be transformed.
This is entire point of BatchNode - to be able to send one mesh instead of many. To achieve that, it needs to transform vertices manually inside composed geometry. You can think about it as a special case of skeleton-based animation, with bones being Nodes and each vertex having 100% weight of specific single node.
Edit: scratch all which I said below and above. I was under impression you are using BatchNode, but you are talking about GeometryBatchFactory. Sorry for confusion.
Original usecase for BatchNode was to facilitate NWN models, as far as I’m aware. They have this one-part per bone approach, where there are multiple distinct geometries under moving hierarchical nodes, sharing material parameters. Using default handling, it meant sending 20 hundred-vertices objects to GPU separately. With batch node, they are group based on material (sometimes there is only one, sometimes there are more), some special things are omitted from batching (like true skin/skeleton nodes, emitters etc). Original nodes are still staying, because they represent ‘bones’ which are moving.
Thanks to that, it is completely transparent to user. You can still modify your transforms as in old way, it is just rendered faster