Scoobi has a combine primitive, which works just like your reduce (using hadoop's combine).
And scoobi also has really great support for transparent serialization. There's a bit of information here: https://github.com/NICTA/scoobi/wiki/Serialization (Note: the explicit stuff is very rarely required, it's just used to allow you to provide your own efficient schemes). And the pretty robust object graph serialization happens here: https://github.com/NICTA/scoobi/blob/master/src/main/scala/com/nicta/scoobi/impl/rtt/ClassBuilder.scala (It's actually using reflection to turn object graph into Java code that would completely reproduce it, then compiles it, and sends the byte code down)
(For some reason, github only attaches the comments to the commit, rather than to the pull request)
@johnynek thanks, I've updated the commit
Update scoobi comparison in README
@johnynek Uggh, sorry -- I'm an idiot, I hadn't noticed I spelt that wrong too. Fixed