"Past performance is no guarantee of future results."
If Grant is correct (which he typically is) then the short term reversal factor is just the latest 14 day RSI. Optimize simply keeps this value within range. However, the Pyfolio results are calculated on the values during the actual timeframe which one holds the security NOT this value when it was opened. Just because the RSI was X when one opened a position doesn't mean it's going to stay that way. This will be exacerbated if one's logic is good at finding securities expecting a big change to RSI. Optimize just optimizes based upon past performance but that's no guarantee for the future.
I ran into what seems to be a similar issue with beta. Tried to take a relatively short term beta (eg 14 days) using that as a constraint in hopes of keeping beta low. Failed miserably. When looking at the securities that were purchased, sure enough, they all had low beta as of the day they were opened. However, I looked at the betas during the time I held them... much different. That short term beta had so much variability it was a meaningless predictor of future beta. May want to spot check some of the past and future RSI values for some of the holdings?
That would be my two cents.