The slice points into the array. No point making another array when the array already exists and the slice can just describe the desired part of it.
The addition causes implicit coercion, so it works. To make your assignment work, you would need to coerce:
var list = ["hello", "world"]
var slice: Array<String> = Array(list[0..<list.count])