Good points... I had to look back at some code to figure out why I had determined that wouldn't work...
The derivations could also look at values of other options to do their deriving. And yeah, you can get in circles this way, but in many cases it is clean.
And of course you could also want to only look at another options value as part of your derivation if the user actually gave that value, rather than if it was the default...