Tuples and lists are very different structures. Lists are homogenous (all elements are the same type), so the element type only needs to be specified once. Tuples can be heterogenous (elements can be of different types), so all of the element types need to be specified.
I would have thought the reason lies in mutability.
A list can change via append and other methods, so the ... would be redundant information. Whereas a tuple does not mutate and ... can be used if you need to type-hint an arbitrary-length tuple. E.g:
list is not necessarily homogenous. There is nothing incorrect or invalid with a list of [1, ‘a’, set(), dict()]. The reason is, as @mbyrnepr2 says, mutability. When I define a tuple I know exactly how long it is. If the length of the tuple might change from invocation to invocation I need to declare that. A list is a mutable object with a variable length so the most I can do is declare the data type(s) it will contain for type checking.