Why is my custom post type not being activated on plug-in activation?

That’s not how register_activation_hook works.

register_activation_hook is called only once, when the plugin is activated. CPT’s however need to be registered on every single request, not just when the plugin is activated.

This is because WP doesn’t store a list of CPT’s in the database, it’s generated at runtime by PHP code.

So instead, register your CPT’s on the init hook. The same for custom taxonomies.

As for the activation hook, use that to create custom database tables if needed, but the activation hook isn’t super reliable to begin with. Most plugins don’t use it.