In the former case, you're getting a new slice value, so it's reaosnable to take a nil slice and return a non nil slice.
If mapa worked that way, map assignment would have to work like append
m = m["key"] = "value"
Which would be quite odd, to say the least.
append
function appends the elements x
to the end of the slice s
, and grows the slice if a greater capacity is needed. It reallocates the resulting slice describes a completely different array.