Amazing typing, sky high attack stat, a fantastic priority move to cover its low speed, access to swords dance, decent physical bulk...it is quite the powerhouse.
Play Rough is similar to Kyogre's Water Spout in the sense that if you bring Mawile in on something it can force out, you can just click play rough and get massive damage even on resisted hits. Obv it's not as strong as Kyogre's water spout and much slower, but it's almost as strong as WS would be outside of rain.
252+ Atk Huge Power Mega Mawile Play Rough vs. 0 HP / 0 Def Rotom-F: 262-310 (108.7 - 128.6%)
252+ SpA Kyogre Water Spout (150 BP) vs. 0 HP / 0 SpD Rotom-F: 282-333 (117 - 138.1%)
And it's primary STAB move (play rough) of the best typing out there.
I will say right away I completely disagree with the view that everything needs a "universal counter" to not be OP. That's just false. Pokemon on a team work together to take down different threats. Not everything needs a cold stop like Skarmory is to Conkeldurr, and in fact a meta where everything has cold stops becomes the definition of RPS/overly matchup-dependent.
And, the list of checks to this guy is fairly large. Garchomp, Exca, Lando-T, Char X/Y...Given it relies a lot on sucker punch, one might figure that it's fairly easy to get one of them in on a predicted sucker punch and force it out/deal massive damage.
However, the fact that substitute is such a thing basically negates the "comes in for free" part, and I know this because SubPunch is the set I use almost exclusively when I play with MegaMaw teams. Checks, to come in without having to sac a pokemon, have to be able to predict when the opponent will go for a move that's safe for the check to switch into, and then come in. But Mawile doesn't have to predict what will come in--as long as it can predict "a switch," all it has to do is click substitute, and nail whatever comes in on the following turn, getting to select whatever move most suits it to damage the check. Even if something like Rotom-W comes in to volt switch out to try to mess up prediction, just click substitute again and you'll set up a new one on the turn Rotom breaks it.
Substitute also forces offensive pressure, meaning you can much more easily land a sucker punch if necessary, even two in some cases (one while opponent breaks sub, another if it tries to finish the job).
I hate to say it, but as much as I love this pokemon both in terms of design and competitive prowess, I'm on the ban side of this one, at least right now.