Tuve este problema. Creo que podría deberse a que la función se ignora dentro de la primera función de selección y simplemente devuelve todo. Encontré una manera de hacer que esto funcione, intente algo como lo siguiente:
Use la clase Select junto con la función selectWith de 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);