Первый создает новый массив для дарования. Созданный список - это просто мусор, который нужно собрать.
Второй лучше, но должен быть уменьшен до
List<String> elements = elementDao.findElementsById(elementId);
Кажется, вы думаете, что оператор присваивания может использоваться для заполнения списка, созданного вызывающим абонентом. Это не вариант. оператор присваивания просто берет ссылку на список, созданный DAO (который может быть любым списком), и присваивает эту ссылку переменной.