It's conceptually similar, but we've focused on optimizations that add value on top of ProGuard - we do use ProGuard internally, so the improvements we're seeing from ReDex are on top of that.
We get a lot of leverage out of operating on dex directly, as the final step in the build. For instance we can make really good inlining decisions because we know how many virtual registers the caller and callee use.