This is likely a case of getting lucky in randomness, or at most a complete transmit failure.
Gateway timing would be unlikely to be at fault, as the downlink RX1 for a join is quite long after the uplink - there is plenty of time.
Please be careful not to mix up the terms uplink and downlink however - what you are calling uplinks are actually downlinks. Uplinks are node to network, downlinks are network to node.
Additionally a RAK831 is just a concentrator card. If something is going wrong with a gateway built around one, the greatest likelihood is that it is a software or configuration issue, not a concentrator issue.
Conclusion, it is not the timing of LMIC on the node, but a packet forwarder timing issue on the gateway.
That is most likely mistaken.
Note that when adjusting timing on a node, there are two parts - how early it starts receiving, and how long. If you make it start earlier without also making it receive longer, it’s quite likely to miss a packet if the clock is not wrong.
Some versions of LMiC don’t do a good job of setting the “how long to listen for” value, especially as it is split across multiple registers.
If you really want to understand this, probe around on the RAK 831 and find one of the pins that matches transmission mode - forget which it is, but it’s more accessible on that than pretty much any other gateway. Modify your node code to set a GPIO high when it starts receiving, and low again when it gives up. Put one probe on that node signal and trigger on it, put the other on gateway and now you can see the actual timing matchup with no guesswork.