MathJax 3's synchronous approach requires you to load everything you need up front — all the font data, all the extensions, etc.
That makes for larger payloads, and and doesn't allow dynamic extensions
(like \require{...}
).
But there is only one file needed, and it can be packaged as part of a larger file containing other code needed by the page.
This means every combination of components needs its own custom packaging.
That makes distribution via a CDN mode difficult.