I always wondered why BIP44 HD wallet differentiate between internal change addresses (m/44'/0'/0'/1/*) and external receiving (m/44'/0'/0'/0/*)? Why do some wallets advice me not using internal address to receive funds? It seems to me superfluous complexity.

TLDR: It is for organizational purposes. Wallet developers follow BIP44's derivation path regardless of currency for consensus reasons. It doesn't make a lot of sense for Ethereum HD wallets to utilize the account field since addresses are already accounts in ethereum, but some wallets do.