I believe this is something that isn't very extensively researched, so I decided to do some research of my own here. This should also address why you all are having trouble getting into group matches despite there being only two people in the group currently searching for matches.
First of all, it is important to understand that each match in this game is assigned a "true player 1" and a "true player 2". On your own screen you are always the "player 1" but that obviously isn't always the case from the objective perspective of the match (unless you're playing single player). You can know which is which by paying attention to which side of the stage you spawn and comparing that to training mode where you will always be "true player 1". An easier way to tell this is if you're playing a mirror match. The "true player 2" will always get the alternate color. In team battle mode, some exceptions apply.
Now, when you actually enter the matchmaking, as you all are familiar, you will search for opponents for ten seconds after which the game will enter into a CPU battle and resume matchmaking in the background. The catch here is that there are actually two matchmaking modes called "Recruit" and "Apply". During the initial countdown, you will be applying for a match and after that when you enter the CPU battle, you will be recruiting for opponents. In order for a match to occur, a recruiting player has to find an applying player. The recruiting player will become the player 1 of the match while the applying will become player 2. This can be further confirmed by observing the event mode (LAN mode) in this game where the player can actually select the matchmaking mode. Interestingly, the ten-second countdown remains in the apply mode while it does not exist in the recruit mode there, reminiscent of the online matchmaking.
Who actually gets matched with whom is a little more complicated, however. If we have two pools of players, the appliers and the recruiters, how does the game select who gets to play with whom? Most likely the game uses some internal variable to calculate how good of a match a specific opponent is. Factors that affect this score are probably connection strength (ping, not necessarily stability) and rank (at least in ranked matches). The recruiting player has a certain treshold for that score that gradually lowers as they spend more time in the lobby without getting matched with anyone. From my observations, it takes around 50 seconds in the ranked lobby after the initial coundown when the game starts to match you with literally anyone, no matter how bad of a connection or how big of a rank difference.
There are also some exceptions to this system. You might recall that you have previously been matched back-to-back with someone on ranked who has a really good connection. The match happened almost instantly after the previous one and neither of the players could possibly have had enough time to enter the CPU battle. This is indeed an exception in the matchmaking system, so that really good matches get increased priority. It seems that in this case the player who has waited longer in the search is assigned the player 1 status.
Knowing all this, we can explain why it sometimes can be hard to get into group matches with specific people. It seems that the group system uses at least some sort of matching criteria, meaning that the game puts some effort in finding a good opponent. Recall that groups were initially meant by the developers as timed ladder tournaments, not necessarily for organizing friendlies. Consider two people entering the group (almost) at the same time. They will both first enter the apply mode, failing to find anyone. After that they will both enter the recruit mode, still unable to find each other because two recruiting players can't. Even if they don't enter the room exactly at the same time, there's a good possibility that during the, say, 5 seconds where the other one is actually recruting while the other is still applying, the recruiter's recruiting criteria might still be too high for them to get matched. In friendlies, on the other hand, this seems not to be the case, since it is much easier to get matched up by using code.
TL;DR If you have issues finding others in group matches, make sure that there is a significant difference in time (probably 10-30 seconds) between you and your opponent entering the queue.