Why does Cycles sampling give diminishing returns? This may seem like a obvious/basic question, but I am still curious, and I don't know the answer.

There will obviously be a big difference between an image rendered with a single sample and one rendered with 500 samples, but there will be a smaller difference between an image rendered with 1000 samples and 1500 samples.

What is the technical reason for this?

From what I understand of how cycles works, it fires one ray per pixel from the camera, which bounces and translates through objects at random angles.

It would make sense that samples would bounce in directions that have already been sampled, but I would think it would be possible to skip sampling "duplicate samples" by skipping bounces that are at a similar angle to previous bounces?
Cycles and all other path tracing render engines use Monte Carlo integration. The probabilistic error after N samples of Monte Carlo integration is:



This means that to halve the noise you have to take roughly 4x more samples.

Actually, we can do a bit better. You mention skipping samples in directions that have already been sampled, and we do this to an extent. Cycles uses Quasi-Monte Carlo integration, which means it uses a sequence of random numbers that is distributed well over all directions to avoid such duplicate samples.

Quasi-Monte Carlo has better convergence than basic Monte Carlo sampling, but it's difficult to quantify and depends on the scene and settings. The integral for global illumination is high dimensional which makes things quite complicated.

To halve noise you need somewhere between 2x and 4x more samples in practice.