Если очень коротко:
Agile подходит для работы в условиях высокой неопределенности — когда мы не можем знать наперед, что нам нужно. Например, его используют в бизнесе (часто нельзя угадать наперед, что на самом деле нужно клиентам, какой продукт будет востребован и т.д. — это нужно проверять экспериментами и через промежуточные результаты).
Waterfall подходит для работы в очевидных системах и где есть достаточная определенность о том, что будет происходит, и это достаточно просто предсказать. Например, это может быть строительство здания (мы примерно можем понять, какой результат нам нужен, здесь вряд ли будут значительные изменения).