Having SBT data at the ray generation SBT record isn’t really necessary since there can only be one inside an SBT. At least I haven’t needed it so far.
It becomes a lot more important for the SBT hit records, where you can/must provide different data like the vertex attributes and indices and material parameters which control the behaviour of the resp. anyhit and closesthit programs.
What’s in the SBT record is fully under the developer’s control. The SBT is pretty flexible. The crucial thing to learn is how the SBT index is calculated, see chapter 7.3 here:
In my example applications I only use SBT records with an additional data field inside the hit records, all others only need the program itself and parts of the launch parameters.
I have one hit record per instance inside the SBT because each instance represents one geometry acceleration structure (GAS) with one SBT record each.
That way I can provide the pointers to the vertex attributes and indices as well as the material index per instance as SBT data directly.