Yeah, I think I know the reason.
The standard SMF function: ssi_recentTopics has 'limited' for performance reasons.
This means it will ony select a certain block of recent posts from the tables, and then it starts filtering by board.
This means that if you specify a board which is not very active or a small number of recent topics the selection may not find any relevant topics in the 'read'
This code in is SSI.php
'min_message_id' => $modSettings['maxMsgID'] - (!empty($context['min_message_topics']) ? $context['min_message_topics'] : 35) * min($num_recent, 5),
what is means is that the query selects the newest messages using 35 x 1 = 35 messages.
If you selected board does not have any posts in the last 35 messages the query reports no results...
You can fix this by changing the query ccode in SSI.php
This code will always read the 350 latest messages. If you still have issues you can increase the number 100 to a larger value. Mind you this query will also run on the board index, don't go too wild......
'min_message_id' => $modSettings['maxMsgID'] - (!empty($context['min_message_topics']) ? $context['min_message_topics'] : 35) * 100,
Addition: I see that in SMF2.1 this variable is introduced: $context['min_message_topics']. I cannot see if this is being set anywhere though