Creo que la mejor opción en general es la del guid, pues las probabilidades de que este se repita a escala global son realmente muy bajas, y en proyectos mas pequeños prácticamente nula.
Sin embargo, en una base de datos mediana/pequeña, e incluso muy grandes, los generadores son también una buena solución.
Si ya usas un generador para el encabezado de la factura... por que no usar otro (o hasta el mismo) generador para los detalles.
Ahora mismo estoy trabajando en una base de datos que tiene un único generador que se utiliza para generar la llave primaria de TODAS las tablas, y funciona muy bien.
Sobre el rango del generador, no tendrás problemas. En firebird 2 este es un bigint, con lo que su límite superior es 9223372036854775808, (2^64/2) nada mas y nada menos.
Unos cuantos registros caben allí...
Hasta luego.