¿Se requiere Task.WhenAll en el código de ejemplo?

En el siguiente código, task1 y task2 son independientes entre sí y pueden ejecutarse en paralelo. ¿Cuál es la diferencia entre seguir dos implementaciones?

var task1 = GetList1Async();
var task2 = GetList2Async();

await Task.WhenAll(task1, task2);

var result1 = await task1; 
var result2 = await task2; 

y

var task1 = GetList1Async();
var task2 = GetList2Async();

var result1 = await task1; 
var result2 = await task2; 

¿Por qué debería elegir uno sobre el otro?

Edición: Me gustaría agregar que el tipo de retorno de los métodos GetList1Async () y GetList2Async () son diferentes.

Respuestas a la pregunta(2)

Su respuesta a la pregunta