Which values to store in rainbow table generation?
You can do either and the method works. Depending on which value is stored you check for existence in the table at different points in the computation. If the chains are long enough, the addition of a half step does not matter much for time, especially as the reduction function is typically very fast.

However, when you are trying to break a key with a size smaller than the hash size, it makes sense to store the former. Contrarily, if you are looking for passwords which do not have a lot of entropy and may even have different lengths, it can be more efficient to store the hash or a part of it instead.

(Note that the image you quoted is not for a rainbow table, but a simpler hash chain with the same reduction function at each step.)