wordpress plugins with add-ons

You could implement filters and actions in your core plugin’s code, at the appropriate places where you want your addons to interact, by using:

do_action( 'my_action');
apply_filters('my_filter', $value, $variable_to_pass, $another_variable_to_pass);

Then you can have addons as separate plugins and have them interact with the core via these hooks by calling:

add_action('my_action', 'action_handle_function'); 
add_filter('my_filter', 'filter_handle_function');

this is how plugins interact with the WordPress core so you are just following in those footsteps.