The interface is the right place for the offset / count arguments, because it frees the backend to optimize things in a way that makes sense for it. Making the interface "always return the complete list" means the backend always has to load all the data into memory.

Imagine if the backend is not a bunch of files, but some external server (e.g. the Yarn app timeline server). Returning the whole list means transferring a lot of data from the remote server on every user request, which is very wasteful.

The fact that the FS backend currently keeps the whole list in memory is an implementation detail that can be fixed.