This may be partially correct, but I'm not in a good spot right now to go code diving. The issue may be that if someone stakes PoS blocks while off-network, they may be able to trigger a reorg and orphan PoW blocks if they achieve a higher cumulative work for their off-network blockchain (meaning that the rest of the network did not stake enough PoS blocks in the meantime). Someone may have just lucked out in this case and managed to stake two PoS blocks while the rest of the network had only staked one. Not sure yet. Someone who can go code diving should check how PoS blocks affect the cumulative work of a chain and under what circumstances someone off-network can make their own chain with higher cumulative work without actually having 51% of the hash power (or 51% of the coin stakes being generated).
From my recent investigation in the Elacoin client source while Elacoin was being 51%'d over and over, the answers will probably be in main.cpp in the AcceptBlock(), ConnectBlock() and CheckBlock() functions, or wherever else the Reorganize() function gets called from. Normal behavior in Bitcoin and Litecoin derived coins is that the chain with the most cumulative work (difficulty) will win a reorg and block height has nothing to do with it, but I have not examined that part of the code on any PoS coin to see how PoS blocks factor into which chain has the highest cumulative work.