Pues depende de muchos factres, entre otros: el uso que le vayas a dar.
Si es para algo sencillo, puedes manejar un TStringList, pero tendrías que hacer un par de rutinas para administrar los campos. Sales del paso.
El ClientDataset en mi concepto es un consumo alto de recursos, máxime si tu lista va a manejar unos cuentos elementos,. el desagaste puede ser mayor.
Para el tema de manejar listas con records, debes hacer unas rutinas también de admnistración de los elementos.
Otra opción en cambio es manejar listas con Genéricos. Para ello debes implementar una clase con los campos y los métodos que necesites para administar estos campos...
buscate en Google documentación de generics... te doy
esta página con una explicación básica