TCP timeouts when connecting to a destination, but when the
destination is unreachable (e.g., because you don't have global IPv6
routes, your first-hop router is not operational, the packets are sent
on-link by default, etc.), TCP does not abort the connectivity (and
try the next address quicker -- instead of waiting for the TCP
timeout).
When [HOSTREQS] was written, most applications would mostly only try
one address when establishing communication with a destination. Not
aborting a connection was a sane thing to do if re-trying a single
address was a better alternative over quitting the application
altogether. With IPv6, and especially on dual stack systems,
destinations are often assigned multiple addresses (at least one IPv4
and one IPv6 address), and applications iterate through destination
addresses when attempting connections.