The main difference:
* no support for labels (despite the argument name -> labels in pd.Categorical is what values is above)
* if the constructor is called with two arrays (or better with and levels argument), they are used as `value_pointer, levels` -> you can't pass in `values, levels` -> this is inconstant will probably lead to user confusion (is an API change possible?)
* no support for reordering of levels (assigning levels basically does no error checking/reordering
* no support for order

Do you want a PR for this or is it easier for you to do yourself?