For the record, I think the sub jynx set is suboptimal (lol) bc you're throwing away a moveslot that have several significant advantages (psyshock hitting hariyama/av mons, NP pressuring a ton of builds, or LK aka the move that make jynx dumb in the first place) for the ability to set up on some bulky waters (not that we really have that many) and make prediction easier.
I think you're underestimating how big that rock weakness is. Jynx also carries a way to get past steelix (or at least do a ton of damage even if it's not carrying FB). Jynx gets a +2 boost if it chooses so vs a +1 boost, meaning generally bulky stuff like gastrodon has much more trouble tanking. While vivillon possesses a way to boost speed, the most common way of dealing with it (other than steelix or regirock + sleep fodder) is revenging it. Things like piloswine, samurott, and shiftry have much more trouble killing jynx, and the most common scarfers (rotom and jynx) outspeed vivillion anyways. A specific advantage that sub jynx has over vivillon is the fact that it has a ton of sets that are all a huge pain to deal with, so it has a lot more opportunities to set up a free sub. Other small advantages are the fact that lovely kiss hits everything vs missing out on grass types (this is minor, as this is basically just Cradily, though it gives you more potential to play around Shiftry).
I know you asked for a reason sub jynx was better than sub viv, but I kinda veered off a bit, sorry bud. Those are just some specific reasons to use sub jynx over vivillon, but that being said, sub jynx isn't the reason jynx is a ridiculous mon (thought the fact that it has that option and it isn't bad is quite good). Sash jynx is the set that is the most important to look at imo.
While there are mons that are faster that can revenge, some of them risk dying to break the sash (tauros, archeops), and those fast u-turners still are in a bad position even if they don't immediately die because lovely kiss pressures anything that switches in. A common best case scenario in this case would be something like: U-turn from swellow breaks sash as jynx lovely kisses the switch-in. Now you have a low health jynx vs a sleeping mon. Not only has jynx put 1 mon out of commission for at least a turn or 2, but is now also in a position to fire off one of its stabs (which, paired together, have very few actual switchins). Even in this optimal situation jynx still came out even, or even a little bit on top. Niche lum checks like Skuntank still end up losing to double LK with sash intact. There are very few matchups where leading with jynx doesn't lead to a disadvantage, and even in those few matchups, hazard removal means that eventually sash jynx can apply a similar or even greater amount of pressure than it could have from the lead slot.
There is always a risk that jynx could be running a certain move (sub, np, focus blast) or item (scarf, sash, even lo) that drastically changes how you approach dealing with it. The problem is that all of these sets are fairly splashable, and looking at the rest of an opponents team usually doesn't give enough information to deduce the set.
tldr; jynx has very few bad matchups, and is usually impossible to play around without being put at some disadvantage.