This follows standard Python conventions. Look at the results of these analogous expressions:
>>> a = [0, 1, 2, 3, 4, 5]
>>> a[4]
4
>>> a[4:5]
[4]
As you can see, one returns one item, while the other returns a list containing one item. This is always the way python works, and numpy is just following that convention, but at a higher dimension. Whenever you pass a slice rather than an individual item, a list is returned; this is true even if there are no items in the list, either because the end index is too low, or because the starting index is too high:
>>> a[4:4]
[]
>>> a[6:6]
[]
So in all situations, passing a slice means "return a sequence (along the given dimension)," while passing an integer means "return a single item (along the given dimension)."
y2be 1d arrays, For example if you want to pull out each column of an array to plot it or run it through additional signal processing, ect.