There’s a pre-existing thread which explains in detail how matchmaking is conducted (this one: Alliance Wars Matchmaking (Discussion & Developer Response) MASTER) plus info is outlined on the Support Articles.
A common misconception is that Even Numbers is the prime directive of matchmaking. It actually isn’t.
Matchmaking prioritises the WAR SCORE first and foremost for alliances with +/- 2 members.
The WAR SCORE is a mathematical function of:
- Top 5 heroes per OPTED IN player
- Top 30 heroes per OPTED IN player
- Top 5 troops per OPTED IN player
- Personal war history for last 20 wars per OPTED IN player (note this changed. It used to be a function of the ALLIANCES history… But was changed to close a loophole that was being exploited to gain easy matches).
What this all means is that there can be matchups between different number of participating members. How it works is that the two alliances still have a similar Alliance War Score, but in order for Alliance A to have the same war score as Alliance B (who have +1 member), they need to be stronger in the other aspects of the calculation; be it more depth, better top 5 heroes or better past history performance. Think of it like an equation:
A1 + B1 + C1 + D1 = A2 + B2 + C2 + D2
In order for the equation to balance, if A1 goes up, some of the other factors (B2,C2,D2) need to go up 
Anyways, I’m not justifying / saying “working as intended” or anything, just explaining how the matchup CAN occur.
It’s possible that numerical (perceived) mismatches in numbers are occurring more often now that it uses the individuals history not the alliances history as there are now more alliances in the brackets these days…
I don’t know personally as I’m not QA or even staff.
This message is just to correct the misinformation being accidentally spread.