Тогда действительно непонятно зачем нужен отдельный тип данных для списка.
В смысле? В питоне есть тип для списка, а как он реализован не так и важно, в большинстве случаев. Почему там динамический массив или что-то схожее, ну потому, что это наиболее оптимальный вариант для большей части задач. Это как в C++ почти всегда лучше взять std::vector, чем std::list.