man, this thing is a bitch, huh.
so we're all on the same page, this is the set I mainly refer to as "cb zygarde":
Zygarde @ Choice Band
Ability: Aura Break
Tera Type: Dragon
EVs: 252 Atk / 4 SpD / 252 Spe
Adamant Nature
- Thousand Arrows
- Toxic / outrage
- Iron Tail / outrage
- Extreme Speed / outrage
now, these are a quick list of pokemon I have seen cited as checks to this thing:

-mega,

,

,

,

,

-mega,

-mega,

-mega,
so you may have noticed a number of these are megas, as for the ones that arnt:

- toxic cripples the far more common unware set, and even with magic guard you're only about 15% of chip away from tarrrows 2hkoing, also if zygarde ever decides to click iron tail you take like 70 so good luck!

- cannot switch in safely without taking upwards of 90%, so its entirely reliant on getting in safely, which for the faster teams gren is put on, usually means a sack
also if its dd zygarde gren just loses but shhhh

in the same boat as clef but somehow even worse despite toxic immunity, if you let your fully physically defensive scizor do any of the following, you no longer have a zygarde check:
- get knocked
- take rocks
- take spikes
- get chipped for more than like, 10%
most of these can be fufilled by simply, using scizor, at all, prior to zygarde coming onto the field, in fact, even if you dont bring scizor onto the field prior to zygarde, it can STILL lose if its boots simply because zygarde hit the back to back max rolls, this mon hardly counts as a check

- this thing is only actually a check if you A: are running ice beam and B: the zygarde doesnt click outrage, which like, it usually wont, but the fact that it can makes this immediately a somewhat unreliable check

- while technically a decent check, its limited splashability, susceptibility to toxic, and weakness to pursuit all come together to make this feel a lot more shaky than it realistically has any right to
all the megas on the other hand share the same issue of being yknow, your mega, if you are running a mega evolution with the express purpose of countering zygarde, that very much limits what you can do with your mega slot, not to mention most of the megas are shaky anyway, with the only real "consistent" answers being mega scizor (who still loses with enough hazzard pressure) and chesnaught/meganium, the former being crippled by toxic and the latter being basically only run to deal with zygarde (and still really doesnt like taking iron tail)
as for the others

- in the same boat as gren where its strictly there to revenge kill and cant actually safely come in outside dire emergencies, except even more limited because of it being, yknow, a mega, and a rocks weak one at that

- very fringe pick that as far as I understand is mainly picked specifically for this matchup? I havent actually run into this thing so I'm not entirely sure how well it performs as an answer but its low physical bulk leads me to think it probably doesnt particularly like switching directly into tarrows even if it does force zygarde out afterwards., also you need max speed to actually do its job of forcing zygarde out which limits your evs signifigantly.
so to recap, as far as "switchins that dont just drop to 2 tarrows after taking like 15%" we have like, 5 pokemon, 3 of which are megas and another of which is pursuit bait, if we include offensive checks theres a few more, but I think its important to keep in mind that this is just the most common of zygardes sets, mons like frosslass and gren practically stop being checks if zygarde starts dding and pokemon like slowbro clef and gourgeist dont particularly like fighting glare/sub/coil
tl;dr zygarde is broken as shit please get rid of it ty :)