Why does postgres choose to sort instead of scanning the index?
Generally speaking, reading a tuple from an index is more expensive then reading directly  from the relation. 
This is due to the overhead of traversing the tree as well as occasionally reading from the table (due to changes for example)

Thus, if you scan the entire table Postgres will come to the conclusion that it should scan the table. 
Limiting the scan immediately changes the above as the number of tuples that need scanning is much more limited.