Exactly, IPFS allows data storage and retrieval for Dapps to also be done through a decentralized network. That's the whole point of a D-app, not falling back on someone's central servers. The performance and scalability limitations of Ethereum make it virtually unusable as a database, application data definitely needs to be taken off-chain.
Also, the IPFS system contains IPNS, which allows users to host mutable content. Rather than navigating to the hash of a file, you're retrieving what's been signed by the publisher's key. So it's more flexible than just static content.
Just to be clear, this is exactly what I thought when I first started working on DApps. But the more I get into it the more I realize there's a blurry line in there a lot of people don't even think about.
I know it's cool to build completely decentralized apps, but let's ask WHY you're trying to build a completely decentralized app.
Chances are you're trying to make sure that what users do on the app is never censorable.
If you're trying to build a decentralized app where EVEYRY asset must be unstoppable, then you need IPFS. For example million dollar homepage kind of app.
But I think those are niche cases and for most decentralized apps, the more important part is the actual transaction ledger. I don't really care if my profile image next to my transaction history stays on IPFS forever, in fact I don't want it to be permanent. I would rather have it be deletable if I wanted to. All I care about is that I own certain asset or have control over certain actions through my private key.
I think a lot of DApp developers are missing the point in this regard, trying so hard to make everything "100% decentralized" for the sake of being decentralized, while sacrificing user experience, not to mention the fact that users may actually NOT want their assets to be permanent (they only care about transaction being permanent).
Yes I know what IPNS is, but I think by now you get my point. It's not about being able to have an address to refer to multiple versions, but the question about "do users want immutability for that?"
Also, the IPFS system contains IPNS, which allows users to host mutable content. Rather than navigating to the hash of a file, you're retrieving what's been signed by the publisher's key. So it's more flexible than just static content.