Veamos, que no se si te he entendido. ¿Estás diciendo que en el Before Insert del TIbTable o TIbDataset coges el valor de la clave del nuevo registro? Si es así, es normal que no tenga ningún valor, en el Before Insert todabía no se ha añadido el registro. Lo que me extraña es que no te dé ningún error :s
Para asignar valores a los nuevos registros, yo te aconsejo utilizar el evento OnNewRecord
Pruebalo y nos comentas