This is a new idea to me and I'm not sure how to describe it correctly.
I've realized that tessellation / displacement needs to be scaled proportionately to the texture mapping size. If the texture is mapped over a larger area, the displacement map needs to stick out more from the surface.
Is there any easy way to get a “mapping scale” value in a GLSL fragment shader? The closest thing I can think of is textureQueryLod, but I don't think that is really applicable here.