One major reason is that recruiting sites are trying to give you an overall average portrayal of players based on their viewing.
Each school is evaluating players for a fit for one program only (their own).
The elite kids are obvious, everyone would take them, but once you’re past the top-50 kids or so, you’d be surprised how wide the variance can be.
After that, coaches have to decide where to spend recruiting resources, and if one kid is rated essentially equal to another prospect from an area coaches want to make a focus, they will absolutely spend the resources on the kid from the area that the coaches hope to make a future focus.
Finally, coaches are human too. They make mistakes and allow certain biases to enter their evaluations just like anyone else.
What I can tell you is that no coaches are recruiting one kid over another because they don’t want to create the best team. Coaches have such a short shelf life to prove themselves that they’re taking the best kids for their program, even if it hurts feelings.