According to the documentation for EntityFieldQuery::range if you pass NULL as argument, the range directive gets removed.
This is not working as expected. It is not removing the range directive, it is just setting the $start and $length values as NULL.
To reproduce, construct a query as normal, including a range(0,10) condition. Then, set range(NULL, NULL) - or just range() - and execute again.
In entity.inc line 1314, it checks if ($this->range) - which in this case would result in:
range = array(
'start' => NULL,
'length' => NULL,
)
Should the range() function not check if ($start === NULL) before assigning the arguments to the object property? Alternatively, finishQuery() needs to check the individual elements instead of the array.