Relays (and bridges) don't use microdescriptors
In we_use_microdescriptors_for_circuits() we return
!server_mode(options) && !options->FetchUselessDescriptors;
So if you're a relay, even if you don't otherwise cache dir info, you end up fetching and using old-style descriptors rather than microdescriptors.
This decision has a minor effect on bootstrapping, where we won't build circuits until we have the full set of old-style consensus-and-descriptors, so e.g. time_to_try_getting_descriptors in main.c is dictated at that point by LAZY_DESCRIPTOR_RETRY_INTERVAL even if we don't have much of the microdesc info.
The decision has a larger effect on bridges, which fetch and use normal descriptors -- over time they will diverge even more from normal client behavior.