It seems to me you have more than one question. The first is when a reference will appear on the reference queue.
The documentation (on purpose?) leaves room for interpretation, taken from here:
Provides reference-object classes, which support a limited degree of interaction with the garbage collector. A program may use a reference object to maintain a reference to some other object in such a way that the latter object may still be reclaimed by the collector. A program may also arrange to be notified some time after the collector has determined that the reachability of a given object has changed.
So, it happens some time after. Under the current implementation it is an async process, so the documentation is not wrong.
The second question you have starts with a false premises:
... GC will come around and collect the SoftReference...
Not really. GC will not even know about the existence of this SoftReference if it is not reachable. GC finds alive objects and everything else is garbage, as weird as it might sound. As such GC will not even know that there was a SoftReference as it never visits it. When this happens, nothing is put on the ReferenceQueue. For that to happen that SoftReference needs to be traversed, but since that never happened...
Simply because a SoftReference is unreachable does not imply the same about the referent. It is perfectly valid for the referent to be strongly reachable, but for the SoftReference to be unreachable.
To your last point (that I imply you will care about): when SR is reachable, but referent is dead. When GC discovers such a thing, it's supposed to clear the referent (subsequent get will return null) and post that on the ReferenceQueue, right? Well, almost. This depends on the actual GC. For a contra-example, take Shenandoah GC that has a flag called ShenandoahRefProcFrequency (defaults to 5). It shows how often should Weak References be cleared, if it's not 5, when such a scenario happens : the referent is declared "alive". This referent is kept artificially alive until that limit is hit.