This video by ChickasaurusGL shows what happens if an egg is used for a bad clone. The resulting Pokemon will also be an egg Pokemon, which will hatch into ??? (precisely, species 0x00
), presumably the same ??? you would've gotten if you'd bad cloned an ordinary Pokemon instead of an egg.
Within its Pokemon list struct, the game stores data for whether the Pokemon is in an egg within the initial "species" section, which comes before the main chunk of Pokemon data. This initial section is usually written successfully when performing a bad clone. This means that whatever (glitch) Pokemon exists where the egg is linked to in the main Pokemon data section will be regarded as an egg by the game.
What happens from here varies. If you've done the bad clone properly, then the memory the game attempts to read as though it contains an egg will be blank (zeroes). This means the game will look up the species with ID 0x00
, which is ???. This is what will hatch from the egg. However, if the box space the game reads has been used before, then there will be leftover data, leading to unpredictable results.
??? itself has varying behaviour; it has different properties in Gold/Silver compared to Crystal. In Gold/Silver, ??? requires 25 egg cycles to hatch (6399 steps) [source], but in Crystal, it requires 84 cycles (21503 steps) [source]. ChickasaurusGL says in the video description that the number of steps required "may vary" for unknown reasons -- not sure if that's just because of the egg cycle difference in G/S compared to C, or if that behaviour was observed testing the same version of the game. Either way, ??? is what you'll get from the egg.