Eu tive esse problema. Eu acho que pode ser porque a função está sendo ignorada dentro da primeira função de seleção e está apenas retornando tudo. Eu encontrei uma maneira de fazer isso funcionar, tente algo como o seguinte:
Use a classe Select junto com a função selectWith do tablegateway:
use Zend\Db\Sql\Select as Select;
$select = new Select();
$select->from('table');
$select->columns(array('id','category_name'));
$resultSet = $this->tableGateway->selectWith($select);