Yeah, thanks for reporinting.
Don't think I remember implementing or testing it, or ever had those combinator destroyed by biters, and guess not many other people had either.
control.lua has local function on_destroyed(ev) mlc_remove(ev.entity.unit_number) end
which destroys the entity, and cleans-up all internal info associated with this particular mlc, including invisible constant combinators used for outputs and invisible wires to those.
I think right fix might be to only remove invisible entities (via out_wire_clear_mlc part of that mlc_remove), so that e.g. invisible wires won't need to be reconnected, and not remove internal data or destroy the main (visible) combinator, and let factorio do the latter, which I think should leave the ghost behind.
Ghost should probably keep same entity.unit_number (corresponding to "uid" value used to track mlc's), and reviving it will be same as building such mlc entity from blueprint, i.e. already handled by on_built hook.
So yeah, should probably be easy to fix, just need to confirm that leftover ghost has same unit_number (if not, internal data should just be reassigned to new one instead of removed in mlc_remove) and do such basic testing afterwards.
Don't have factorio installed atm, but probably will get to it eventually.