This seems like it could be a bug in ECL's implementation -- or due to some detail in the standard:
> (probe-file #P"/usr")
#P"/usr/"
> (probe-file #P"/usr/")
#P"/usr/"
> (probe-file #P"/")
NIL
> (probe-file #P"//")
NIL
One more case:
> (probe-file #P"/.")
#P"/"
Update, FWIW, SBCL does what I expect:
* (probe-file #P"/")
#P"/"
Here is a commit message from the fix I'm testing right now (hope this answers the question – it was a bug indeed):