В предложении "Why will they have been waiting for hours?" ошибки нет. Это предложение построено в будущем перфектном продолженном времени (future perfect continuous), и его можно использовать для выражения ситуации, когда действие (ожидание) будет происходить в течение определенного времени до какого-то момента в будущем.
Форма "will have been waiting" подчеркивает, что действие началось в прошлом и будет продолжаться до указанного будущего момента. Например, такое предложение может использоваться, когда речь идет о том, что к определенному времени в будущем они будут ожидать уже несколько часов.
Если у вас есть дополнительные вопросы о грамматике или времени, не стесняйтесь задавать!