La risposta a questa domanda potrebbe riempire un libro.
Penso che uno dei motivi principali è che lo sviluppo agile si concentra sul deliverable. Si concentra sempre sul fornire esattamente ciò che è più urgente qui e ora.
Un altro motivo è che le pratiche di pianificazione e stima basate sulla storia che seguono i processi agili forniscono una stima molto migliore di ciò che può essere consegnato e quando.
Un buon esempio di quanto sia efficace la pianificazione basata sulla storia, è un progetto a cui ho lavorato. Per un paio di mesi (prima che adottassimo uno sviluppo agile), il leader del progetto riteneva che avremmo potuto consegnare in tempo, e che era di circa 18 mesi dalla scadenza. Tutti gli sviluppatori avevano la sensazione che fosse probabilmente irrealistico. Dopo aver avviato una pianificazione agile, il capo progetto aveva ancora una valutazione ottimistica della situazione. Ma solo dopo alcuni sprint, il capo progetto si è reso conto che il team semplicemente non aveva la capacità di fornire tutti i requisiti sui tempi previsti. E questo era ancora più di 12 mesi dalla scadenza.
Anche le pratiche così agili rendono la realtà molto più chiara.
Infine, i team agili tendono a adottare più spesso pratiche che creano una migliore qualità del codice, ad es. sviluppo basato su test, refactoring frequente, integrazione continua, revisione del codice peer / programmazione coppia, ecc. Non che i progetti software tradizionali proibiscano queste pratiche, tendono solo a non essere così a fuoco.