For what I can do, I believe it can be worked around in various ways, but not a true solution. For example, you already noticed that if you are placing ghosts and not using auto-build, then it works fine (ghost to ghost). Of course, if you aren't placing ghosts, auto-build doesn't matter and it works fine (real to real). You can also reduce the interval that the auto-build occurs, then most of the time it would work fine (ghost to ghost, likely before conversion).
I'm not even sure it could be classified as a bug, either. Probably, their code for detecting when to swap a belt for an underground is already complicated, and doesn't need to be complicated further by the situation where "given a user placed a ghost belt, when a script revives that ghost, and the user places another ghost belt that would have triggered the underground-replacement behavior if that belt was recently that ghost, then that belt is replaced by an underground."
It's an unfortunate interaction, but it's also a rare scenario.