You have set the material to use the Generated output of the Texture Coordinate node. I'm not sure why this does not affect the material on the surface of the mesh (probably because the material takes only the base mesh into account without the movement by an armature).
But for the hair it takes the bounding box of the object into account. And this means, the coordinates always go from 0 to 1 on each axis, no matter how much the dimensions of the mesh are. You can imagine that a dancing character changes in width, depth and height just regarding its silhouette. As an example here just in 2 dimensions, on a simple square and then on the silhouette of the dancing character (I've taken just a few frames), just as overlay to make it easier to see:
If you would instead use UV coordinates, the texture coordinates of the hair would be dependent on the faces on which they grow and move together with them (I've made the hair shorter to have less dynamic movement so you can see the texture better):