Why do we have a landscape material?

Because… thats how it works.
Its much(!!!) more optimal than directly painting any materials on it.

why do we have to have landscape material? why couldnt we just directly paint any material onto a landscape?

so why cant we simply drag and drop materials onto landscape and then paint them?

It’s a technical constraint of programmable graphics cards, which are considerable less flexible than generic programming in c++. The material system in Unreal abstracts much of this away, but under the hood, it’s all HLSL/GLSL shaders that control your graphics card, or intergrated graphics. Any given draw call that’s send to the graphics card can only be rendered with a single shader, so thats why you have a landscape material.