Because of the requirements they impose on filesystem implementations: what happens when you add/delete files from the directory you have open. And with a saved position from "telldir"? How can you stuff enough information into a "long" to allow a stable iteration position in the face of concurrent modification of the directory contents? It's just a pain in the ass to implement.
And it's so tricky and so unused, that the implementation was actually horribly broken from its inception in BSD until 2008, 25 years later!