I'm simply going to toss out this suggestion, and leave it for you to test.
The JDBC driver may well be FETCHING all of the rows before it returns, whereas the other system is simply returning the open cursor.
I have seen this behavior on other databases with JDBC, but had not direct experience with SQL Server.
In the examples where I have seen it, setting the auto commit to false for the connection prevents it from loading the entire result set. There are other settings to have it load only portions, etc.
But that could well be the underlying issue you are facing.