eval() is always sent to the primary. You can use the generic command() method to run commands on secondaries, although with the upcoming Java driver release that will change, and virtually all commands will be run on the primary no matter how you call them.
There are a few ways to verify that operations are run on secondaries. You can start secondaries with high verbosity (mongod -vvvvv) and tail the logs to see what operations they're performing. You can setProfilingLevel(2) and see which queries are run by looking at the system.profile collection. Or use mongosniff on the secondaries' machines to see what queries the driver sends them.