Both projects are free implementations of the Java standard libraries. libgcj's homepage says it was merged with Classpath, but they're still separate packages in Ubuntu.
So what's the difference? Is one better than the other? Does one depend on the other?
GNU Classpath is a reimplementation of Sun's built-in Java classes. libgcj is a native library used for running Java apps compiled to native code via gcj. They're under the same umbrella, but have different purposes.