The main disadvantage is the general one: in Java, you can only inherit from one class at a time, while you can implement as many interfaces as you like.
If list is a private or local variable, there's virtually no advantage initializing as an interface. You'd be better of with
ArrayList<String> list = new ArrayList<String>();
However, if you have a public field or a method parameter, you'd be better off with the least specific declaration: the interface. The abstract class also implements the interface, so it can be used. But the consumer of your class can then use any class that implements the interface, while this class can inherit from any other class they might like.