From the manual of coreutils:
Some GNU programs (at least cp and mv) allow you to remove any trailing slashes from each source argument before operating on it. The --strip-trailing-slashes option enables this behavior.
This is useful when a source argument may have a trailing slash and specify a symbolic link to a directory. This scenario is in fact rather common because some shells can automatically append a trailing slash when performing file name completion on such symbolic links. Without this option, mv, for example, (via the system’s rename function) must interpret a trailing slash as a request to dereference the symbolic link and so must rename the indirectly referenced directory and not the symbolic link. Although it may seem surprising that such behavior be the default, it is required by POSIX and is consistent with other parts of that standard.
Does the bold mean that the filename expansion by shell appends a slash to a symbolic link?
Where do you see this in Bash manual or POSIX specifications?
Originally I thought that it is up to the command (instead of the shell) how to interpret a symbolic link with or without a trailing slash given as its command line argument.