Hola! Es curioso he hecho pruebas con el código que has presentado frente al original y he obtenido esto:
Con el programa original del curso:Tiempo invertido en insertar una persona en listaarray (en nanosegundos): 37644
Tiempo invertido en insertar una persona en listalinked (en nanosegundos): 8031
Con el programa modificado:Tiempo invertido en insertar una persona en listalinked (en nanosegundos): 17530
Tiempo invertido en insertar una persona en listaarray (en nanosegundos): 15784
Efectivamente llama la atención, a mí también me ha sorprendido y no tengo la respuesta de por qué ocurre así. Puedo hacer un intento de explicación, pero es solo un intento. La explicación pasaría porque el tiempo de inserción se compone de dos partes, por un lado la recuperación desde memoria de la lista y por otro lado la inserción en sí. Cuando se accede a memoria, es posible que se esté recuperando un bloque entero de memoria donde están las dos listas. De este modo traer el bloque tendría un coste digamos que en torno a 15000, insertar en linkedlist en torno a 2000, saltar dentro de un bloque desde la posición de una lista a otra en torno a 6000 e insertar en arrayList en torno a 15000.
De este modo para el programa original tendríamos:
Recuperar bloque 15000 + insertar en arrayList 15000 = aprox. 30000
Saltar a otra lista 6000 + insertar en linked list 2000 = aprox. 8000
Para el programa modificado
Recuperar bloque 15000 + insertar en linked list 2000 = 17000
Saltar a otra lista 6000 + insertar en ArrayList 6000 = 12000
Los números no cuadran exactamente y seguramente la explicación es más compleja

Saludos!