The UA parser enrichment uses the uap core java library, so the reason it’s returning those values will be down to the behaviour of that library.
You might get better results by configuring the enrichment to use the latest database - you can see an example of doing this here in our docs.
Now, it might still not produce quite the results you want - none of these parsers are perfect. If that turns out to be the case, we also have the YAUAA enrichment available. I can’t speak to whether one is more reliable than the other, but I know that a lot of people like YAUAA for its detail.
You could use both and compare the two if you like.
Long story short, this data depends on 3rd party sources, none of them can assuredly always be accurate/up to date, but there are a few options so between them hopefully you can get as close as possible.