I happen to play on shift a lot, because I'm playing for fun. But I have to disagree a bit.
First of all, there's nothing stopping you from sweeping everything with dragon dance in shift. But many people like not making battles incredibly boring, and I'm sure you are one of them.
Set just promotes a diversified team. The AI will always try to hit the thing right in front of it, so the challenge is to find Pokemon that switch into opponent's attacks. Of course, having a bunch of Pokemon of the same type will fail in this sort of environment. You are going to have to make predictions, and it is thrilling when they pay off, in my experience.
It also kinda depends on the game you are playing set on though. If the Pokemon in general have very limited movesets, like all fire and normal moves for example, it can get really irritating having to manually switch in. However, take Yet Another Fire Red Hack. Nearly all the Pokemon have diverse move pools, and the opponents have coverage-filled sets. Set makes those battles more exciting and interesting, as figuring how to get the Pokemon that can beat the current target in can be a interesting mental exercise.
I'm sure you have different experiences though.
Although, Chicken Fingers, maybe you should give your players a choice between set or shift, but if they choose shift, change the message to "Opponent is going to sent out something" or something that keeps the Pokemon that switches in a mystery. It provides a bit more breathing room between opponent Pokemon, yet means that the player can't switch in an assured counter most of the time.
I understand your pov on set battle style. Then again my opinion is a bit different. Set battle style is especially annoying in battles that include poisoning or burning. Happened to me: le my poisoned poke kills the opponent, but he sends the next one and my poke dies before I can do anything. So... uhm... I don't see that as thrilling. Just playing with a handicap. This is just one aspect that I didn't mention before.
Also about killing everything with Dragonite even when the battle style lets you switch: well that would be my last resort in those games where the level curve is absurd, when you grind and grind and grind some more but nevertheless you're still 10 levels below the gym leader or the elite 4. In such cases, then yeah. But otherwise no. In fact even in hacks like Dark Rising 1-2 I still played by building a strong team of 6, not just relying on Dragonite (not to mention in that game you fight stuff like MegaMewtwo and having a Dragonite with Dragon Dance doesn't mean you'll survive that XD). So I understand that the choice always goes to the player. Yes you can easily get yourself a dragon dance user and kill everything with that, killing the fun entirely. But it's your choice. With set battle style it's kinda the only way.
You say that you wait to see the opponent you are fighting and try to switch your poke so that his attack doesn't hurt much. But then you're just losing your turn. And that's tiring. Imagine when you're in a cave. Loooong cave. And you get to fight MANY trainers. And you have a team with many types, right. But you can't go to the pokemon center for a long time. Yeah THEN you totally feel the pain of playing with set battle style. Say you have only 1 water pokemon. They kill that. Only choice is to go back out and heal the team. Like only choice. And sure they can kill your water pokemon in whatever battle style, but set battle style makes it happen far more easily. Say I start with my charmander and they send a geodude. I switch him out for a squirtle, he gets hit. Next they send a zubat and I don't wanna fight zubat with squirtle. So I gotta switch him for sth, for example a pikachu. Pikachu gets hit. And so oooooon. Repeat process for 3-4 trainers and your time is wiped out, no matter what super well-balanced team you built. And after you get tired of that you just get yourself a magikarp, raise it into a gyarados with dragon dance and kill everything with that. You will encounter stuff that can kill that gyarados, so you'll give exp. share to something complementary and that's that. Boring.
Besides, you say it's thrilling to see if your strategy works. Now a zubat has like... 2 moves so it doesn't count. Let's say it's a crobat. That bitch will use sth with poison. Poison bite or toxic... now you may have a steel type in your team (Lucario, Skarmory) but that may not have a decent moveset to counter a Crobat. Say that Lucario has a moveset like so: dark pulse, earthquake, aura sphere, dragon pulse (let's say it's a Lucario trained in order to max his special attack). It's not like it's any bad, right. But what can he do against a crobat? You're forced to send it and fight a match that gets dragged cause nobody has super effective moves only cause that's the only way for you not to get poisoned? (since steel is immune to poison). And let's say the opponent, instead of a Crobat, is a Nidoking. You send Lucario, your Lucario dies. Earthquake. Then you'd need to have a tm for psychic and teach it to Lucario to counter all the poison types you would face. You can do that, I even have a Lucario with psychic in some game I played. But I think at this point I made my point. With a set battle style you're forced to make certain choices, from the 6 pokes you pick for your team (i.e. you can't do without steal or you're guaranteed to get poisoned a billion times) to the moveset. And that's your only way to clear the game without visiting the pokemon center every 5 minutes.
So to consider your suggestion, I gotta say that's a solution that makes things half less annoying. If we consider the first thing I wrote in this comment, yeah at least you can switch out sth that can't fight anymore before it dies. But what if he actually had just enough life left to pull it off? I dunno, something like this doesn't excite me. Let's say I have a Swampert that had already little life to begin with and I fight some ground or rock type and I still get hit cause Swampert is kinda slow. I'm left with little life and I know the opponent is about to send sth "mysterious", sth like "???". What will I do? Will I keep my almost dead Swampert? Or switch him out? If I switch him out, what do I send? Sth versatile, sure but maybe I don't have another water user. And maybe my opponent will send yet another ground/rock type or maybe a fire type. And I have Swampert for water and ground, so he'd be the best option. But I thought he was too weakened and switched him out and sent a Charizard. So that now the opponent (let's say they sent a Golem) can one-shot me with rock slide or sth like that. What can I do? At this point it's too late to send Swampert again. If I switch out Charizard for Swampert, Swampert gets hit and dies. But Charizard doesn't stand a chance against a golem, unless I got some spare tm for Earthquake and taught it to my Charizard. Sth I usually do, given that the game allows me to get many tm's for earthquake. Then what if I don't have it? can I leave Charizard to die? No, poor him. I switch him out for sth else. Sth else that doesn't have the advantage (that was Swampert) but at least also doesn't have a weakness. And that's how the entire strategy of super effective, weakness and resistence and so on just gets flushed down the toilet. It really becomes a matter of endurance matches where the best option is to build a team of tanks that can withstand many hits. I.E. forget about Swampert (even though he's half a tank himself) and go with a more defensive type like Milotic (which is in my opinion one of the best non-legendary water types, anyway). And so on.
So all this to say that from my pov a pokemon game is the most enjoyable when I know what the opponent is about to send and I take action based on my pokes' current status. I imagine what moveset the opponent might have, based on its typing, and try to make the right call in sending in the right counter.
And yeah I do enjoy playing pokemon games with teams that are varied and have versatility. I.E. right now I'm playing DR2 (actually re-playing as I found out that I never finished the game as I didn't have the final version). My current team consists of:
(note: I need hm users to be in my team and I'll delete the hm's when they won't be necessary anymore)
-Dragonite (starter): Dragon Dance, Dragon Claw, Thunder Punch, Aerial Ace
-Lucario (neutral nature, but his evs weren't trained properly. He's more for physical attack): Drain Punch, Crunch, Fire Punch, Strength
-Volcarona (poor him with 2 hm's): Flame Thrower, Signal Beam, Cut, Fly (can't wait to find the move relearner and teach him Hurricane. He didn't have room for that)
-Milotic: Surf, Ice Beam, Hypnosis (most useful to catch pokemon), Recover
-Electivire: Thunderbolt, Psychic, Ice Punch, Signal Beam (his moveset sucks, even more so since his special attack is 60 points below his attack. Gotta readjust everything when I get to the move relearner)
-Haxorus: Dragon Dance, Outrage, Night Slash, Super Power / Feraligatr: Surf (until I get Waterfall), Ice Punch, Crunch, Rock Slide
What I'm missing badly is earthquake. No tm so far. A ground type with earthquake would be ideal. I keep suffering against electricity. But so far I couldn't find a Mudkip and Tyrantrum and Torterra, which I do have, are reaaaally slow. So I decided I would teach earthquake to Haxorus and raised him. Also I did that since in this game you get to fight many dragons and an anti-dragon squad is necessary. The level curve is such that there are certain fights in which I just can't pull it off unless I use dragon-dance. If I even get to use it. For example at some point I had Regigigas level 80 against my level 70 Dragonite. Tried to set him with dragon-dance twice. Hit that damn Regigigas twice and he didn't die. He hit me twice and my Dragonite got wiped out. Not like Haxorus helped, actually. I won thanks to Milotic surviving everything.
Wow I wrote far too much. Well all I wanted to say is that set battle style has many minus points on the enjoyability and I'm sure that many think the same as me. It's not a matter of wanting to have it too easy. I do enjoy the challenge. But this is a bit like throwing in a crazy level curve. Besides, dunno. I take this DR2 that I'm playing as an example. Not only the level curve is crazy, but there's plenty of pokemon that can learn stuff they should never learn. Just to make it harder on the player. But I don't find it enjoyable when a wild Scrafty uses dragon dance and kills me next turn cause I couldn't one-shot it. Like seriously? Dragon-dance is for dragons, damn it. Not for Scrafty. Another thing that I hate in DR2: if the player uses hypnosis, a confusing attack, a poisoning attack or whatever like that, the chance of the effect not happening is crazy high. Whenever the player fights an opponent trainer or a wild poke there's like a 90% chance that the enemy's effect will indeed happen. Example: EVERY electric type paralyzes me. Whether it's with thunder, thunder punch, thunderbolt, thunder wave or more simply with the ability. In the end I always get paralyzed. Annoying.
So I understand that people want to make hacks that increase the enjoyability by raising the level of difficulty. That's perfectly reasonable, as pokemon games are clearly too easy. Well they're designed in a way that 6 yo kids should be able to beat the game. You can't expect for them to be too hard. So it's ok to raise the level curve, but not in a crazy way. Besides, sth that in DR2 works and in other hacks doesn't: ok you raise the level of the opponents by a lot, but then make it so that it's possible to even grind to catch up! In DR2 at least if your opponents are at level 85 you have areas where you can find level 75-80 wild poke and train there. There are hacks where your opponent is level 85 and the highest level for a wild pokemon is 45-50. O.o you could take a full day just to get a single pokemon to reach level 70 and be a match for that opponent.
So yeah, my point is: it's ok to try and increase the enjoyability, but let's not lose track of what makes a game enjoyable! It's not enjoyable when it's like the opponent is cheating and you are forced to play with a handicap. It's the most enjoyable when the A.I. is programmed to use the best attack to deal the most damage to you, instead of some pointless rain dance. If they wanna use rain dance, it must be cause a surf or a thunder follows. That's what makes a game really enjoyable. Oh and the level curve must be adjusted. It's not possible to play a game where the level of the elite 4 is around 45 and you have pokemon that evolve at level 60. Like... unacceptable. Nevertheless I don't find it necessary to have the elite 4 with all megas at level 100 either. Level 75-85 would probably be ideal. Maybe with a chance to rebattle them at level 100.