Na verdade, é 129371298372928172198379812732198372 de vezes melhor tipar sua lista.
Isso evita casts. Olha só, se você tem uma lista de Strings, sem tipar, você precisa fazer isso aqui:
String item = (String) lista.get(0);
Tipando você só faz:
String item = lista.get(0);
E quantas vezes você usa o get e faz esse cast, comparado com o tanto de vezes que você declara a lista?
Na hora de inserir dados, o sistema também te avisa um possível uso errado na hora da compilação:
lista.add(new Integer(10)); //Ops! Integer não é String.
É possível iterar sobre a lista facilmente:
for (String dado : lista) {
System.out.println(dado);
}
Existem outras vantagens.
O List não tem métodos duplicados que fazem a mesma coisa (add e addElement, por exemplo).
O List não tem sincronização, que geralmente é inútil e só consome performance.
Existe mais de um tipo de lista, além do ArrayList, você pode usar o LinkedList, e as listas do util.synchronized.
Você pode transformar listas em listas imodificáveis através do método Collections.unmodifiableList.