Pour moi (mais je ne suis pas un pro de symfony) tu ne récupères rien dans le repository, tu crées juste de quoi récupérer dans le controller.
d'ailleurs tu vois bien que dans le controller tu fais un getRepository.
En fait il existe des requêtes "magiques" pour récupérer des enregistrements dans le controller (comme les findOneBy, findBy ou findAll etc...), mais si tu veux une requête un peu plus poussée pour récupérer des enregistrements il te faut la créer dans le repository.
Pour ton exemple, dans le controller il te faudra faire un "getRepository(...)->findAllWithRegion()" pour pouvoir traiter le résultat de la requête.