No good reason. Historically, there have actually been more than 2 shades. Late 1800s the school adopted blue and white as official school colors. Original color was a light blue ("Columbia blue"). A few lighter, brighter shades were seen in the early years. 1950s-60s navy was used. In the 70s, royal blue was adopted. BYU noticed that fans weren't really wearing the school colors much (especially compared to other schools) and the BYU fans in the stands looked like a bowl of "skittles". So, in the early 2000s we let a market research team tell us what to do and they said go navy because people have navy stuff already and more of them will wear it to games (lots of cheap BYU fans unwilling to buy royal stuff didn't help). It worked, as far as getting more people wearing school colors to games, but fans missed the unique royal color and its association with BYU success in the 80s and early 90s (national championship, heisman trophy, top 25 finishes, LaVell Edwards, etc.). Soon after Kalani became head coach he pushed royal because of aforementioned and to signal a return to greatness and brighter future.