Why not hard fork it just once to add a rule that automatically doubles the block size every 75000 blocks? Block size should automatically keep up with Moore's Law.
Because Internet connection bandwidth is the bottleneck for blocksize, which has nothing to do with the Moore's Law.
Some time ago Luke Dashjr, one of Core's contributors, made a proposal to decrease blocksize to 300 kB and then have it slowly and automatically increase - you can read it
here if you want.
But this kind of ideas is pretty bad because it's essentially betting on how technology will be improving in the future, and if you overestimate it you will risk damaging Bitcoin. If you underestimate it, than community might decide to fork from this protocol, just like it would fork without it. And anyway no realistic blocksize would allow on-chain scaling, so it's better to keep the main network stable and secure and build second level solutions.