Is there a reason I can't derive from PrimitiveComponent?

in C++ you can do anything, including make your own primitive components, but for your case, im not sure why you would want to.

if you want to be able to see a component in the 3D world, than you should use a mesh, because you can make a mesh look like anything. or if its 2D, you could use a billboard.

what did you want your component to do that a mesh cannot?