For example: if you hold a reference to object in your script, and the object is removed from the scene, the engine can reuse the address for a new object, but it will result in your script holding a reference to the wrong object.
I believe its the object pooling system not talking to the scrips. This bug is a few years old and I believe it wont be fixed till v4.
Most people don't seem to encounter it, and I worked around it fine buy just making sure I manually null out any references when they leave the scene.
The real WTF which made me finally say this engine is not for me is that they changed the behavior so that it won't happen in Debug, but will still happen in Release. Different behavior for Debug and Release is an even bigger bug!
Its such a rare and sneaky bug, and when it starts happening in your release you can't even debug it!
Small update: I reported the issue on Github in September 2019. From reading the comments it sounds like the inconstant behavior was only in from 3.2.2 to 3.2.3 version (~6 months) then fixed in 3.3. However a user is reporting that the issue is still happening in 3.3 as recently as May this year.