This was all a bit before I started learning to read/write champion code myself, but my understanding of the cause was:
Most champions had spells/passives/etc that only had to check for “themselves” to trigger logic. So when it was Viego running their logic instead, it would not know what to do.
So in Zyras case, it would spawn a plant, then check “Zyras” passive cooldown before sending another one. Because there was no “Zyra” passive to check, it would just fire off another plant, and repeat until Viego left her body or until some other bug stopped it.
As for the final question, Viego/Sylas/Renata etc all caused us to have new “standards” for how to properly script to not run into the common bugs with them. So new champs should follow these standards and just work, but regardless, our QA teams would test to make sure it works anyway.