I'd check into the Occidental Grand before staying at the other 2.
A couple friends of ours stayed at the Park Royal a couple of years ago when were on the island. We visited them on the site...it's very nice, but they said restaraunt waiting times were very long, it took them over an hour to get thier food for diner, EVERY NIGHT! AND if you went to the bar to get a water, they gave you a styrofoam cup of water...no ice, just 8oz. of water!!!! That ain't gonna last too long in the Mexican heat!! Also there were no refrigerators in the rooms, so you couldn't go buy some bottled water for yourself and keep it cold without having to go buy a cooler also and getting ice was a hassle, no ice machines on the hotel room levels.
some of this may have changed, but that's the way it was then.
As far as the Iberostar goes, I've heard it just really isn't that "diver friendly", they charge for other dive ops then their own to use their dock, they don't wan't you to hang scuba gear off the balcony to dry, (one guy said in a report that the room didn't even have enough space, so he hung his wetsuit off the tv!!)
We've stayed at the Occidental Grand and it was very nice!! the grounds are beautiful, the food was very good, not the same thing day in and day out on the buffets either, and it was only a 10 min. boat ride to the reef!!!
Drawbacks are there just isn't much to do at night and going to town will cost you about $20 one way by cab.
My personal choice would be to pass on the AI and find a nice place that meets your other needs closer to town and patronize the fine eating establishments in town. You really do yourself a disfavor if you don't eat in town some, there are many, many very good restaurants of all price ranges.
If you want a sort of mix of AI and non-AI, Blue Angel Resort (formerly Caribe Blu), is now offering breakfast and lunch on dive days as part of your dive/hotel package. They are now also serving diner and Eva has come up with some very nice selections for the diner menu.