Hello, I got an idea how to mitigate creation of too big blocks. It's actually quite similar to Monero. There's how it should work:
1.) We have to establish some kind of average block size over a period of time (let's say over last 14 days).
2.) Every block mined will be compared to this average. If it is at least 15% bigger, then the block reward will be reduced (the bigger that block is, the bigger reduction in reward). But, if it's within the limit, there will be no reduction. This way, we could prevent the creation of too big blocks and basically protect individual nodes from downloading hundreds of megabytes of data in short period of time. I know, that nodes can already decide how big blocks they will accept, however, this creates another layer of protection for nodes.
Obviously, this will change the money supply, however, not by much. Miners will be incentivized to not mine these blocks with lower reward. 15% bigger blocks should be enough to count in growing number of transactions without hurting miners profit.
Reddit discussion:
https://www.reddit.com/r/btc/comments/61ejer/limiting_max_block_size_through_reduced_rewards/?st=j0p823ar&sh=84438cf7