The Arduino abstraction layer is much simpler than that of most vendor HALs, because it supports a very small subset of the capabilities of the chips it supports. A subset that is common to MANY microcontrollers, so they all get to use abstractions.
Vendor HALs tend to be aimed at supporting ALL of the capabilities of the vendor's chips, which frequently ends up NOT being very "abstract" at all. And, you know, having HAL functions that might be easily converted to a competitor's chip is not considered an advantage.
Also, most Arduino functions might be considered closer to "middleware" rather than HAL, whrereas a true HAL might expect to have a separate layer for middleware, and then a standard-ish POSIX/libc layer for actual users.
And Arduino makes "reasonable" use of C++; I don't think I've seen a C++ HAL.