The reason for the paean of scripts-right-before-</body>
is because they block parsing.
This is bad, especially considering your use case, in which there is likely much content on your page waiting to be parsed and rendered other than what you are including via Javascript.
Including scripts last allows for everything included directly in HTML to parse and render happily without waiting for any scripts (and their entire cycle of request -> parse -> execute).
However, there is a problem with this strategy. And that is piling script tags at the end of your body doesn't allow for good (any?) dependency management. This is one of the main reasons requirejs was created (among other purposes like code encapsulation, versioning/fallbacks, template plugins, etc).
You are using requirejs for a valid purpose that would be a pain to manage otherwise, and so I would certainly say that requirejs is "worth it" in this case.
As to your comment on "FOUC patching" seeming counter-productive, I am not exactly sure why you find that to be so. Consider what the patch provides you: both a smooth-loading UI and unblocked HTML. Throwing blocking scripts in the head could certainly be a valid decision, but only if most of the content on the page depends on them being loaded as quickly as possible. This is rarely the case (and is in fact something of an antipattern outside of demo/development use).
Think about user experience, specifically thinking about the slow connections/slow JS parsing/executing speeds of somewhat aged smartphones. Rather than keeping these users on a blank screen for 3-5+ seconds, loading asynchronously allows your perceived load time to be much faster. The UI bells and whistles can then be displayed with your FOUC patch when the scripts have finally become available.
Thus you can deliver a seemingly fast page load with async scripts and enhance with JS when loaded, all while getting dependency management/smart resource fallbacks with requirejs. Sounds good to me.