Hola bulc.
A primera vista, dado que el índice Element dentro del repeat recibe un valor aleatorio,
Código Delphi
[-]
Element := Random(Lista.Count);
con toda seguridad obtenga dos o mas veces el mismo valor dentro del ciclo repeat.
Esto haría que en la línea,
intente borrar un elemento que ya fue borrado anteriormente. Provocando una excepción del tipo
List index out of bound
Saludos
