With everyone pushing their changes to main (even if tested...) before getting main to a releasable state there's the open items of reviews (every commit/push), fixes, re-review, ... That might work with developers writing flawless code or relaxed reviews, but for me it was painful in reality.
CI shifts the problem from having to solve merge issues before release to having to solve review issues before release. Releasing is impossible if merges fail, but reviews can be skipped. CI seems to promote reduced review quality.
A perfect solution would avoid all problems close to the release.
In addition to small/fast feature branches an automated temporary what-if branch with frequent merges can provide a preview to detect and solve issues early, while avoiding troubles in main. It seems to help with the main issue CI solves (avoiding conflicts detected late), without causing degraded review quality.