The zero value of a slice type is in fact nil. I think what Roberto means is that an empty (and zero capacity) slice is not the same as a nil. I don't have an answer as to why, except to say that I personally would not expect for a given initialized slice s, s[0:0:0] == nil to be true. I would be surprised if it were.
For Michael, I agree that gob isn't being all that consistent here, but why is it that you feel you would have to reinitialize empty slices after decoding them? As Roberto pointed out they behave the same in practice, except if you compare with nil.
Hopefully gob does not decode an empty map as nil; that would be a totally different situation since a nil map behaves very differently from an empty one.