Con comillas dobles el error que obtienes es: La consulta falló y, por tanto, devuelve falso en lugar de un recurso de acceso a MySQL
Para saber más del error:
$recurso = mysql_query($sql)
or die(mysql_error());
Con comillas simples, la cadena se corta en cuanto encuentra $_GET['varrubro']:
$sql=
'SELECT * FROM productos WHERE rubro = {$_GET['varrubro']} LIMIT ({$limit[0]}, {$limit[1]})';
Además, la última comilla está fuera del paréntesis... o falta un paréntesis?
Por otra parte, PHP interpreta variables cuando una cadena está encerrada entre comillas dobles, pero si está entre comillas simples no, lo toma como simple texto.