Yes. Categories are added as required for the development team to add new features, that’s pretty clear. You can run this python code to pull the categories in the active document.
from Autodesk.DesignScript.Geometry import *
from RevitServices.Persistence import DocumentManager
from Autodesk.Revit.DB import *
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
errorReport = None
doc = DocumentManager.Instance.CurrentDBDocument
errorReport = traceback.format_exc()
userCategories = doc.Settings.Categories
names = 
for i in userCategories:
OUT = names
In my Revit builds I get the following category counts from a clean imperial template (choose none):
2016: 267 categories.
2017: 278 categories.
2018: 292 categories.
2019: 302 categories.
Warnings also change year to year (I believe there are now about 1050 possible warnings, up about 100 in the last 3 years or so). Both of these are just a function of software development. If those were left static you’d get no features in a release, and no one would be happy with that.
For why the values change in Dynamo, my understanding is that the dropdown stores an index value of the category in the .dyn. Values which mismatch may not pull the correct category, and since the changes happen every year…
Matching model types and versions should align with the graph, assuming you saved the graph between the models. If you do see matching Revit builds and dynamo versions causing a mismatch, post the results including the .dyn so we can try and get to the bottom of this issue. If you’d prefer to just avoid the issue entirely, utilize the Category.ByName node. Just make sure you spell the name right, or you’ll get an equally frustrating error.