Hi,
You're right-- I verified this behavior on my system as well.
I believe the issue is that GEOS doesn't guarantee results if the input is invalid. In the case of your "lr2", it's actually not a valid linear ring because a ring by definition must be simple. So for example, if you created an equivalent line_string and called is_simple?, it does return false.
RGeo could do better with error detection and reporting. That's number one on the enhancement list for RGeo 0.4. Until then, you just need to pre-validate your inputs.
Daniel