Why delegateCall is created in the first place?

Many of times we dont require delegateCall for intercommunication between contracts.
even in proxy apart from using the delegatecall in fallback function which is also in assembly code.
It is also advisable to dont use the delegateCall inside a upgradeable contract as it is harmful.

My question is why solidity developers thought delegateCall is usefull feature?

delegatecall is only harmful or dangerous when it is used by someone who doesn’t understand how to use it properly.

This article is useful in understanding and using delegatecall safely: Understanding delegatecall And How to Use It Safely