Почему ожидание завершения потока называется join?
Eсли бы слово fork не было уже занято, создание потока назвали бы fork. fork/join -- прекрасная пара.
так сделано во всех языках программирования
Чрезмерное обобщение -- источник абсолютно всех бед.
Так сделано в языках ориентирующихся на POSIX, потому что в POSIX ожидание завершения потока -- это pthread_join. А в других языках сделано по-другому.