Seems like the text (fitness age is that of an excellent 20 year old) is wrong. The following is a chart based on actual VO2max values and not just the estimate the Garmin watch comes up with.
View attachment 570009
Do the Fitbit and Garmin have the same resting, max HR, and body weight data entered? That could easily influence why the two values are different from each other. Because the VO2max estimation is based on the % values from those two HR data points and the relationship to the pace you're running at that moment. They may also use different lookup tables for their conversion of HRvPace data to an estimated VO2max value.
As for the other part of the question, why isn't your Garmin VO2max value changing? It's important to realize that the Garmin VO2max value is based on the relationship between your HR (relative to your inputted max and rest) and pace during runs. So things that influence your HRvPace relationship can also influence the outputted Garmin VO2max value. Like if the weather suddenly goes from cool weather to super hot weather. The hot weather will make your HR go up at the same pace:
View attachment 570011
So when that occurs, the Garmin will interpret the data as if you were becoming "less fit", but that's not necessarily the case. Rather the Garmin VO2max value is better explained as a "VO2peak" value. Instead it says this is what your HRvPace relationship is based on the recent conditions (weather and course difficulty amongst others). Similarly, if you went from exclusively training on flat roads, and then suddenly did all your training straight up a mountain, then your HRvPace relationship will change. Making the value drop. Again, not because your fitness is truly less, but rather because under those conditions (mountain) that's a representation of your current fitness under those same conditions.
The more outdoor runs you do, the more accurate the Garmin VO2max will be with the increased number of data points.
I personally track the HRvPace data in the following manner. I track the date, pace, HR, T+D, and adjusted pace of each run. Keeping in mind other possible reasons why a run is not a good representation of current fitness. My route generally stays the same.
View attachment 570012
I put the data into two week blocks, graph it, and then put a line of best fit (power) to represent the data over time.
View attachment 570013
What it shows is where my current fitness is at each of those moments. When my line shifts down and to the left, it means that I'm getting faster at the same HR level. And in general, that means I'm getting fitter/faster/have a higher Garmin VO2max value. So using the graph above, when I started in late June at a HR of 136 my pace was a 9:56 min/mile. In Late October at my peak, at the same HR of 136, my pace was a 7:55 min/mile. Comparatively, my Garmin VO2max went from a 49 in June to a 58 in October. Granted for me the relationship between my Garmin VO2max and VDOT performance is a delta of 6.
So if the conditions of your runs are the same (weather, course difficulty, etc.) and your Garmin VO2max value still doesn't change, then it just means you're not responding to the training just quite yet. Granted, the Garmin VO2max value is not purely predictive of performance, it can be a useful tool. In my experience, volume and training load form are the two most key training aspects that influence my Garmin VO2max value.