пенальти даёт косвенная адресация, так как память в компьютерах очень медленная (по сравнению с гигагерцами процессора), поэтому делают всякие кеши, предчтения и прочее..
Сейчас ищу статью, но по памяти получаются такие порядки:
чтение значения из кеш линии -- пара тактов
чтение значения из кеша L2 -- десятки тактов
чтение значения из L3 -- под сотню
Чтение из основной памяти -- несколько сотен тактов.
Когда значения лежат рядом, они при первом обращении попадут во все уровни кешей и будут лежать рядом и пенальти не будет.
А с двусвязным списком у тебя получается чтение из рандомной памяти, которая 100% не будет в L1, но вероятно будет в L2/L3...