The method Skin::bottomScripts is a wrapper for OutputPage but runs the hook SkinAfterBottomScripts using the current skin.
https://gerrit.wikimedia.org/r/c/mediawiki/core/+/611328/5/includes/skins/SkinMustache.php#58 introduces SkinMustache::tailElement.
We should consider updating OutputPage with a tailElement method that takes a parameter skin and fold the code inside Skin::bottomScripts in light of T140664#6287065. In the long run, OutputPage will be able to call this method itself and we can remove communication between Skin to OutputPage and keep that one way.
The fact that this method on Skin exists means it can be overridden and do things such as not execute client side JS which adding unnecessary complexity.