As shown, this is the smallest grain possible. The grain is actually from the sample count. If you were to use infinite samples, no grain would be apparent.
If you want it perceptually smaller, you can use a noise texture instead of a white noise texture, scaled to eye, which will give you more continuous random values that won’t be perceptually so grainy.
You could also just mix your grainy gradient with a smooth gradient. Say, half-and-half.
If you want it more grainy, you can “step” the coordinates going to the white noise:
Separate XYZ, then for each channel, multiply by a number, then math/round (or ceil, or floor). Then combineXYZ. The larger the number you multiply in, the smaller the grain.