Writing a PLPGSQL function returning a table with a column named id, and using the same column name id in a INSERT ON CONFLICT (id) makes plpgsql error.
In short, the benefit-to-cost ratio to change things here is very low so it’s likewise a very low priority for everyone who write patches (and probably needs a fairly experienced hacker too).