I hate this attitude. Yeah don't give the user stacktraces on error but if you give it a meaningful headline and go in detail, experienced users will be able to deal with the problem if possible. If you go Microsoft-error of mystic ways you will have people Google "unexpected error e34566xce" and they will see that it has 10 possible reasons so you don't know what even went wrong.
Anyone who says error codes shouldn't bubble up to the user are incompetent. Either because an incompetent PM infantilizes their users, or more likely because incompetent teams don't/won't take an extra 10 minutes to do proper error handling (and they suffer from this as well since they're the ones who spend hours deciphering the result of a try {} catch(_) { error("we did a fucky wucky uwu") }).
If your code gives attack surface by information about what went wrong maybe you should not even deploy anything. If your code needs to be secret to be secure your code is anything but secure.
No, please tell the user. They've got their big boy pants on and can handle seeing one or two weird squiggles in the worst case, and might be able to actually diagnose and fix the issue themselves (without having to go through support) in the best case.
If it’s a backend/service issue, tell the user, but the bare minimum. You shouldn’t disclose too much info about your system to the end user (think of stack traces, error codes unique to some dependency you’re using) as it may give an attacker some valuable information.