A 1 level difference is nothing. Being 1 level down is absolutely fair. If both players are equally skilled, the one with the higher levels barely has an advantage and it is almost not noticeable.
A 2 level difference is definetly noticeable, but enemy units can still be beaten if you play decent. If both players are equally skilled, the one with the lower levels still has good chances of winning.
However, a 3 level difference is just too much. If both are equally skilled, the one with the lower levels will most likely loose.
4 level difference? Just leave the match, like srsly...
How I would do matchmaking: in addition for searching for people in queue with similar medal count, check if they have similar levels as you (+/- 1). So if you are level 10, it will match you with level 9/10/11. If you have been in queue for quite some time, increase the cap by 1. So now it searches for 8/9/10/11/12. But then it should stop and not increase the cap any more. That way you will not be matched against opponents with 3 levels higher/lower than you. This system can just replace challenge battles. I'd rather not fight overleveled whales at all (level matchmaking) instead of fighting them but loosing no medals if I loose (challenge battle).