sorry for this late answer.
The main goal of ControlAdapter is to allow render adjustment to a specific Control, and this can be done with configuration changes only.
My goal was precisely to change the way how several Community Server controls render in order to add the captcha behavior.
With my approach I don't need to know all about the Community Server application I only need to identify the pieces that need to be changed and ensure no side effects will be introduced.
About your question, I think widgets should be used to add new functionalities and not to extend existing ones. In my scenario I would need to ensure that the widget will be loaded in all specific pages, this means I would need to know specific
details about application pages.
So, I don't see any issues with your approach but if you provide any extra detail about your widget main goal I could express a more accurate opinion.