When I see that, I have no idea if it allocates a new array or if it's in place. Which one is it? At least with a delete function it's clear.
See this playground for an illustration: https://play.golang.org/p/mOpuGVj2ypG
That uses append to delete, and then modifies element 0 in the result. In the first call, only the new slice is modified. But in the second call, both slices are modified, since they share the same backing array.
I consider this to be one of the worst mistakes of Go, to design a highly multithreaded language in which variable aliasing is a dynamic property. I am convinced that many Go programs have latent races and bugs, invisible to the race detector, and they have not yet been tripped because they have been (un)lucky with the runtime's capacity decisions.