This is why Bitcoin blockchain is more concerned about keeping the block sizes small and efficient as possible than adding fancy smart contract features that just add bloat to the blockchain.
Ethereum's block sizes are quite small, about 25kb per block right now.
Actually, block sizes are not limited by bytes like in bitcoin, but by 'gas'. This gas limit can be dynamically adjusted by miner votes, and the way the incentives work, it keeps the blocks not too big, but also not too small.
One feature of Ethereum is that it automatically discourages mining centralization using the 'uncle rewards' system. When the blocks increase in size (and thus put pressure on centralization as you noted), the uncle rate increases too, which is undesirable for miner profits. If the uncle rate gets too high, miner's interest is to vote down the block 'gas' limit, this ensures all the blocks can prpagate around the network fairly.