I've gotta agree with Stephen for this one.
I you think about trying to get a Leg match you need to match with a team that is either 4 above or 4 below. And you can only match that same team every 20 hours. So the likelihood that you randomly tap declare within the same few minutes as one of these teams, is quite rare. Now it does branch out a little bit for the epics and premiums, but not by that much .. I'm sure someone has the exact figures.. but i'm guessing about 15 above an below. So given that fact, the game isn't going to wait indefinitely until it gets you a close match.
Also remember at 200+ teams don't always declare back to back. I know i mini faction can come T200 by only playing in about 10 battles.. So you aren't going to match them easily.
So when the matching algorithm fails to match you for Leg, Epic, Prem within 5 minutes .. it widens its search, and it's then that you could end up match a team 100, 200 above or below you
In the past, match times where terrible because it tried for longer to get a good match. It would be different if everyone was still playing all the time.
The only way around this that i could think of is to do something like in CoC (if it still works) .. In theirs you could cancel the declare. Therefore when you tap declare again it looks for the best match. So you could keep repeating that every fews minutes, if you want the longer wait for the better match