Is it actually "designed" to do that? I think it just crashes when the map data structure is in a corrupted state, because of concurrent updates.
In principle, you may be able to get a panic when updating a slice concurrently, but it's much rarer. That's because a slice allocates a contiguous area of memory for N (cap) elements, so normally the slice data structure itself (which contains the pointer/cap/len) is not being modified, just the area of memory that it points to. That means that you could end up with an element of the slice containing a corrupted value, but the slice itself would not be corrupt. Also, operations which re-slice or append to the slice return a new slice structure - which may or may not point to the original allocated memory.
The race detector is helpful to identify any unsafe concurrent operations, to variables of any type.