I'm guessing the reason is that 'copy' takes two slices as parameters,
while append takes a slice plus a variable number of additional
parameters, each of which is of the same type as the first parameter's
elements. A string is not a byte, and you are not unpacking the
string into its component bytes. Asking the language to implicitly
unpack the string strays from the built-in's definition. Perhaps
explicit unpacking with implicit conversion should be allowed,
though. For example:
s = append(s, "world!"...)
-Daniel