A material is a resource that controls how the engine draws or shades a surface, be it a 3D model or a 2D sprite.The material uses a shader program and lets you edit the parameters of the shader to control the visual appearance of the surface.
There is a separation between the material and the shader for the same reason there are nodes and scripts.It's common to reuse a given shader with multiple materials, just like you can reuse the same script on multiple nodes and scene instances.The shader exposes parameters or properties to adapt its effect to different situations. The material is a unique configuration of the shader properties.