That's not true at all lol.
Celebi has really annoying weaknesses to ghost+dark and with all the popular psychics like rachi, lati twins, alakazam, garde, metagross, mew, slowbro, and slow king, sometimes you'll find yourself stacking ghost and dark weaknesses.
Shaymin separates itself by not having any of that shit, and that's a very important distinction.
Shaymin also has a much more powerful grass stab; celebi either has weak giga or leaf storm which forces hit and run tactics. Offensive celebi is ass in general lol, it wants to hit dragons, fires, steels, flyings, and carry stabs, nasty plot, recover; it has to hit way too much with moves that are way too weak.
You say that celebi is far less predictable but its counters are the same, so what limited versatility it has hardly matters aside from cool utility (which i won't try to hide, stuff like perish song is awesome for beating every cm'er). No matter what celebi does it's not getting past torn-t or talon, so there's hardly a point in trying to make it "versatile." Lets be honest it just gets up a sd/np/sub and passes it out 95% of the time, and it does that well, which is why it is and should be in A-. keep in mind shaymin and celebi are two whole letters apart.
Not saying shaymin is too versatile either but celebi hardly is.
Basically, celebi is passing shit out and shaymin is better suited for the bulky attacker role.
Isn't there like one ou ghost, and it also has an even stronger poison stab? Being able to take ghost moves isn't really relevant for that reason. Dark is notable, so bisharp and ttar? As I said, shaymin doesn't beat bisharp iirc and celebi can pass out of ttar usually anyway (bar scarf varients, but you can just switch out of those). Maybe hoopa, but what is shaymin going to do anyway? Lol
Shaymin isn't getting past torn-t either, so I don't get your point. Celebi can at least pass out to gain momentum (bonus points for being behind a sub) whereas shaymin offers a 100% free switch. Access to twave, leaf storm, epower, bpass, perish, cm, swords dance, nasty plot, psychic, heal bell, recover, sucker punch(?) means that it is definitely versatile, and an all out attacking set even has the benefit of surprise (which shaymin definitely lacks).
Everything you listed wrong with celebi (bad dark weak, which as mentioned doesn't really matter) is also Wong with shaymin (usually even more so), so I don't see why it should move up.
Both of them are usurped by serperior as an offensive grass BTW, so I don't see the point in using either offensively tbh
Also, how is celebi having more moves a detriment? Lol Shaymin wants to run the same exact things, and it has less to work with. The only thing celebi lacks is seed flare, and grass is a sucky offensive type anyway (so leaf storm can suffice), and stab psychic is cute.
Celebi has a better typing than shaymin (fighting and psychic resists are bae), letting it actually beat things. Shaymin is hardcore lacking in resists, and its uninvested bulk is dumb (its invested bulk makes it weak, not to mention entirely outclassed). I've tried to make shaymin work for a while, but calc after calc just showed that celebi was better since shaymin can't really beat what celebi loses to anyway.
Celebi doesn't run an all out attacking set simply because serperior exists, and a base 100 offensive grass isn't awesome in this meta to begin with. That doesn't mean that if can't run it better than shaymin, it just means that shaymin role is even more useless in this meta.