How can filters be run when they are never applied?

WordPress creates automatically filters for each theme_mod with this format theme_mod_{name}. The filters are called in get_theme_mod(). In your case, nav_menu_locations is the theme_mod and this filter is created by WordPress:

//$value of the mod is passed to filter callbacks
apply_filters('theme_mod_nav_menu_locations', $value);

For reference: