Realmente si es necesario especificar un límite en cada string, de lo contrario cada registro tendría un tamaño diferente, es por ello que depende de la longitud de los strings que contenga. Puedes probar a usar AnsiString en lugar de String:
Código Delphi
[-]THistorial = record
Titulo: String[255];
Link: String[255];
Descripcion: AnsiString[1000];
end;
Para comprobar lo que digo, prueba a ver el tamaño de las dos estructuras (la que tu mostraste, y la de Dec) con SizeOf() y notarás la diferencia.
Un saludo.