Thanks to zyro670, in the latest GitHub commit of PkHex, it is possible to change Vivillon wild form.
You need to change the following blocks.
KGOVivillonFormEnabled. Change it to Bool2 to enable Vivillon.
KGOVivillonForm. Change it to the desired form between 0 and 17. No, you can't change it to make Pokeball Vivillon spawn. I tried setting 19 (Pokeball form index), and only Fancy Vivillon appears. It would still be illegal even if the game didn't check for this.
KGOVivillonExpiration. This block is not the expiration date for GO transfer Vivillon to disappear. It is the date (as Unix Time unit) you connected with Pokemon GO. I am unsure if the Vivillon form doesn't appear without this block because I already have it set with Pokemon GO. Just in case, put it to the current date.
This is the legit behavior when connecting Scarlet/Violet with Pokemon GO. Once you set those blocks, any Spewpa, Scatterbug, and Vivillon will be on your selected form.
On the next daily reset, the game will revert the KGOVivillonFormEnabled block to Bool1, restoring Vivillon to the Fancy pattern. KGOVivillonForm and KGOVivillonExpiration blocks are not cleared during the daily reset. This won't change until the next time you connect with GO. That means you shouldn't clear those two blocks once you have captured any non-Fancy Vivillon.
EDIT: There is a fourth block related to this. KGOTransfer, which in my game has some value, but I don't know what purpose it has. Vivillon form changes with the other three blocks only, but I already connected with a real GO account, so I am unsure if it is needed to have data in this block at least once.