Purely anecdotally the one persistent issue I have with LLMs writing code is that they are absolutely paranoid and add a load of indirection and defensive crap and even if you prompt to avoid that it will often require manual steering to remove the cruft.
Fallbacks and backward compatibility are killing me :) So many code paths that just don't fail predictably.
recent gpts are horrendous for this, whereas recent claudes have a tic where they incessantly add useless comments referring to previous changes and will use multiple single-line comments instead of a standard multi-line docblock.
I have not noticed this with Opus 4.6+. The result is usually not too far from what I would have written myself.
I tell it to avoid belts and suspenders, don't leave dysfunctional code in, and fail loud. Seems to change that behavior.
https://github.com/EspoTek/.claude/blob/master/CLAUDE.md
Stick the "Never suppress errors" section into your Claude.md, this will never happen again (works for me with Python/Flask, ymmv for other languages).