Why do we need stateless and stateful contracts at the same time?

Algorand is definitely considering a proposal to give stateful contracts control over an associated account. In analogy to stateless contracts, they might have authority over the address that is the hash of their source code combined with the creating account. (So that multiple instances of the same code might exist.)

Your proposal of allowing a logicsig to reference an installed stateless app is interesting. It would save space for people using complicated, repeated logicsigs. Do you use the same large logicsigs repeatedly? We tend to think that logic sigs are both small (maybe just to check a couple values) and used only once or few times (an escrow account that ceases to exist after being used). In such cases, there’s little to be gained by asking users to install a stateless script, and then reference it from a later transaction.