This is somewhat related to, but not the same as, ACT-1331. When using getVariables(String, Collection) it does correctly return only the specified variables; however, behind the scenes it first grabs ALL variables from the database and loads them into memory. The same is true when getting a single variable via getVariable(String, String).
This could be a legitimate design decision. In our case it causes some grief because we have a number of very large values stored in some of the variables, so pulling ALL the variables from the DB turns out to be a significant performance hit.
A note in the JavaDoc for getLocalVariables(String) says, "consider using getVariablesLocal(String, Collection) for better performance." This might lead one to believe that it is intended that only that subset is being fetched.
Mac OSX/Linux, MySQL