Why do 3D scenes ship as standalone HTML instead of Next.js?
Because a 3D scene is a piece you drop into your own project, not a project of its own. Wrapping it in Next.js would bundle an entire environment around a component you were only ever going to lift out.
A template is a page — the destination, so it makes sense for it to arrive with its environment. A 3D scene is never the destination: it goes inside someone else's hero, section, and stack.
The scene, its Three.js setup, and its shaders sit in one readable file that fits any stack because it assumes none.