Because it's a non-trivial feature to develop, test and maintain. Simply using a flag (banned = true or false) is lot easier / less complex / fewer potential side effects.
To go further, automated ban systems often result in a ton of customer support, and depending on the game's monetization model they can heavily affect the bottom line if too many of a certain type of player are removed from the game.
Also this problem is exasperated in Apex Legends because it is a free game that is also popular in Asia.
I would disagree with that. When you ban someone, they know. They make a new account and come back.
When you move them to a cheater queue, they don't know. They keep playing, none the wiser. It's infinitely better for everyone. The cheater still gets to play, and the non-cheaters aren't affected as much because the cheater doesn't just keep coming back.
The complexity in your app is that you need to have multiple matchmaking queues, which you probably already support due to skill tiers. So is it really that difficult to add more matchmaking queues for the cheaters?
>When you move them to a cheater queue, they don't know. They keep playing, none the wiser.
When 99.9% of the people you get matched with are cheaters (many of which might be quite obvious), it's not that hard to figure out that your account was probably shadow banned. Some cheaters might not care, but it's certainly not hard to figure out.
Also this problem is exasperated in Apex Legends because it is a free game that is also popular in Asia.