What you are seeing is stepping from using a limited colour space.
A 24 or 32 bit colour image uses 8bits for each channel (RGB/A) which gives you 255 possible values for each channel. If you open your gradient in the uv editor and right click on it you will see the x,y and RGB value of the pixel under the cursor. Make sure your zoom is at least 100% and see how many pixels next to each other have the same RGB value. You can find some spots that have more pixels with the same value, which is where you see the flat spots on your model.
By opening your gradient image in krita you can convert the image to use a 32bit float bit depth (gimp only supports 8bit channels), if you then blur the image and save it as an exr, then using that image you will see a smoother surface deform. Bluring the image will change the curve so you want to start by creating the gradient with a higher bit depth.
PNG, TIFF and JPEG2000 support 16 bit channels while OpenEXR supports 16 and 32 bit float channels. That is assuming blender's procedural gradient texture doesn't match the shape you are after.