Geometry Nodes sample texture attribute and materials
You didn't specify if you wanted to work with Eevee or Cycles but right now it seems it only works with Cycles.
You'll need an object with sufficient geometry since the material attribute will be linked to the geometry.
I used a subdivided cube.

After that, create a Geometry Nodes Modifier that initializes a custom attribute and an Attribute Sample Texture.

Tweak the settings of the texture as you wish.

I used a very simple Material setup to plug the custom attribute in. Use an Attribute node set to Geometry and type in your custom attribute name.

Result :

Note : Cycles Only
Adressing the second point of the question : Instancing.
Add a Point Instance node before initializing the attribute.

Result :