I agree it is a bug since the subVI should return the content of untouched cluster elements and behave the same with panel opened/closed.
However, you have to know that indicators (on FP) and terminals (on BD) are not exactly the same thing in a VI. Controls are graphical objects to display data. Terminals hold data in the block diagram. They are related as the Control usually displays the Terminal data, but LabVIEW tries not to update the Control unnecessarly when the front panel is closed or otherwise not visible.
But they are not exactly the same. For example take the working lv-bug3.vi and make it reentrant. You'll see that it doesn't work anymore. The Control has been incremented on the front panel but the subVI outputs the same cluste
r as input. That is because when you make a VI reentrant, the Terminal is disconnected from the Control. All instances of a reentrant VI share the same FP and Controls but keep their own terminals. In your code your write a value in the terminal and another in the control since the value property node is a property of the control, not of the terminal.
In your test case (non-reentrant) the bug occurs probably because LabVIEW fails to keep the terminal data and the control data properly synchronized when the front panel is closed.
There is no reason to use the value property node in a non-UI subVI and it should be avoided. The correct way to implement your code is as altenbach showed in his picture: use wires and write output to the terminal.