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:

[![dancing character][1]][1]

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):

[![dancing with uvs][2]][2]

[![uv coordinates][3]][3]


  [1]: https://i.sstatic.net/NwgpD.gif
  [2]: https://i.sstatic.net/9Rv1F.gif
  [3]: https://i.sstatic.net/kV41W.jpg