Very interesting, please see if you can find a simplified example that can be submitted to NI. Storing a variant in a shift register is something I'm sure I've done plenty of times.
Also I don't know if it makes things easier, but I've been moving away from OpenG functions for cluster manipulation, and choose to use the NI functions, and the Variant to Data trick. Attached is an example where a cluster is turned into an array of variants, manipulated, and then turned back into the cluster. Notice that the Get Type Information also returns the data name. Oh and if you update the cluster you need to set the Cluster size in the Array to Cluster to the right number of elements, the wire will be broken if it doesn't match. I made and XNode to do this but didn't want to add another unknown into debugging this.
Of course if this is a bug in LabVIEW this won't, help. If this is a bug in LabVIEW, I'd bet adding an Always Copy inside the loop will probably fix it.