Whether one chooses to analyze the economics or ignore it, the fabric of monetary incentives is always there because harddrives and bandwidth are not $0.00. Even ephemeral things like "trust" and "reputation" are not zero cost to implement. Maintenance tasks such as "software installs" and "upgrades" are also not free.
If those costs (which are never specified -- and can't be specified) in the technical protocols are not mentally accounted for, it will seem like "centralization" is some weird illogical phenomenon. One would incorrectly believe that the masses haven't adopted distributed protocol stacks like IPFS, sandstorm.io, Diaspora, GNUSocial etc because the "technology" is a problem. If you focus on technology like that, you'll just end up inventing another distributed protocol that non-geeks will not use.
Put another way, you can write a paper specification that such & such protocol is designed for decentralized deployment. You can also draw out an architecture diagram that illustrates how peer-2-peer nodes can be federated, etc. However, all those intentions still have to be executed in the real world and the real world costs money. That is why decentralized protocols/tools like SMTP and Git coalesce into centralized entities like Gmail/Hotmail and Github.
E.g. the Git specification about BLOBs, sha1 hashes, etc does not include a free $10/month VPS server. Therefore, if I want to post a public repo without having to use my credit-card to pay for bandwidth, I can just put it on Github. Thousands of people making that similar economic decision leads to a centralized Github.