It's a bit of either the one or the other. Some algorithms perform better on arrays than on lists, others do the opposite. E.g. the swap idea in quick sort means you need to get to an nth item in the list/array. Now with a linked list, that means you need to iterate n positions through the list just to get at the item you want to compare / swap. With merge sort you need not use nth indexing at all - that's why it's generally better for linked lists. Some algorithms cannot even be used on linked lists, e.g. Heap Sort.
Although you can quickly convert a linked list into an array, then sort that, then convert it back to a list. And if the list contains large items you could create a reference array (i.e. an array of pointers to the data items of the list). That way the array is much smaller, and memory operations are much smaller too (only moving pointers 4/8byte instead of multiple bytes for strings / objects). One discussion I've seen is where the conversion to and from an array does not nullify the speed increase obtained from QS and mem-cache, thus it becomes faster than doing a merge sort directly on the linked list.