Getting away from the dependencies using callbacks works just up to a certain degree. But if you manage to get the same functionality with a callback then go ahead. At the moment this is hard to achieve though.
If you look carefully at the code, yes, you could write a contacts::populate::german procedure which allows you to register the german language keys, but this involves more work as you would have to check the attribute_id for each of the attributes before you register the string. And it is not possible to install the language keys in the contacts.de_DE.xml due to the fact that the keys are stored in acs-translation (which is something we do not commit).