You can override allowSignUp for frontend in Serializer, this hide registration on frontend, but keep reg controller functional for social login/registrations. It's ugly solution, but there is no way how to do it. I also tried to override some frontend components, but some of them could not be overwritten ...
Create new extension and subscribe event in extend.php
In group settings keep registrations enabled.
Code: https://hastebin.com/yodivufeyu.xml
Forum "demo" https://forum.hexa-core.eu/