Problem is that flexbox is a subset of grid. Or to be precise: flexbox and grid are just two forms in a set of layout methods that we already have and will have in future.
In normal architectural process we would establish first common infrastructure for all layout methods.
I've proposed something like that 9 years ago: https://www.terrainformatica.com/w3/flex-layout/flex-layout.... but it didn't go through (Who am I and who are browser vendors?)
So we would have single property that defines layout methods:
display:block;
flow: horizontal; // flexbox now
flow: vertical; // ditto
flow: grid(
rows: ...,
columns: ...
); // grid
flow: multi-column( columns: ... ); // current multi-col
flow: stack;
flow: row(label,input); // variant of grid
So flexbox and grid are just parts of larger entity - set of current and future layout methods. Yet flexes has to be units as they a) were from the very beginning ( see "proportional" units here:
http://www.w3.org/TR/html401/struct/tables.html#h-11.2.4.4 ) and b) can be used in other layouts and properties (why not margin-left:1fr ?)
Note that each layout method has its own parameters in their own namespaces.
Currently set of CSS properties is about 400 in one flat namespace. Any junior architect will tell you that this is close to unmanageable state. But we still pushing new stuff on that x'mas tree. It will fall down by its own weight as some moment, but who cares ...