My guess is that the attribute interacts weirdly with optimizations spanning function calls, like inlining. It might be safe for TUs that define a single function, like with memmove above. Having said that applying the option to the TU itself would be equivalent, and not discouraged by GCC docs.
Definition of macro: https://sourceware.org/git/?p=glibc.git;a=blob;f=include/lib...
Use: https://sourceware.org/git/?p=glibc.git;a=blob;f=string/memm...
For a bunch of other places -fno-builtin-* seems to be used.