My experience has been that just about every module that uses native code (there are more than you think) doesn't work in IO.js because of the changes to the V8 apis. So until all of those are updated to work with both I'll have to stick to Node.
As a native module owner, I made mine work right away and it was work that I needed to do anyway for Node compatibility because changes in v0.11.13/15 broke me as well.
I've had the opposite experience. I've only had a couple modules that use native code that haven't worked, and most of those monkeyed directly with V8 so I wasn't terribly surprised they didn't work with the upgraded version.
3.24.x represents a significant departure from previous v8 APIs. Specifically, the v8 team moved from what I would term, 2nd Generation VM Primitives to 3rd Generation VM Primitives, including 2nd Gen Isolates, GC changes, UTF8/ASCII changes, and other siginificant API changes, in December 2013). Details can be found here [0] in the v8 team's "Design Doc Tracker". Up until late 0.11.x series, nodejs was based on v8 3.14.x, whose last commit by the v8 team was in May 2013, nearly two years ago. Needless to say, there were many changes/optimizations it was lacking. And even if they were to base nodejs on the latest 3.28.x (3.28.73), its last commit was August 2014, 6 months old. It seems odd to me, that they made the effort to get to 3.28.x but didn't go past 3.29.x because of the i18n changes v8 introduced. It's really easy to exclude that stuff if you don't want to deal with it. Bonehead move in my opinion.