It is because Array and UnitRange handle their iteration state differently. For Array, the returned state is the index of the next element, for UnitRange, it is the value of the current element (ranges do arithmetic on their values for iteration, their indices are not used):
julia> iterate([1,2,3])
(1, 2)
julia> iterate(1:3)
(1, 1)
julia> iterate([4,5,6])
(4, 2)
julia> iterate(4:6)
(4, 4)
Since the second argument to Iterators.rest is the iteration state, this is not portable between Arrays and UnitRanges.