There's a way to do that, though I'm not sure it's any better/easier than the addIncludePath you don't want to use, depending on why you don't want to use it, for reasons I'll get into later. This way works for individual methods (you've only talked about one method, 'modal', so that's why I'm putting this out there).
That being said, get out your gear and let's go codewalking. Line numbers here refer to latest Joomla stable.
Line 159 of HTMLHelper.php shows the register method. This is the key to your door. That method registers any method with HTMLHelper and connects it with a key:
HTMLHelper::register( *key*, *method* )
In this specific example the key will be 'kipengee.modal' (your modal script) and the method will be your modal method.
After that call, any HTMLHelper::_ call using the 'kipengee.modal' key will grab your method and run. That method (Line 99 of the same file) reads the key being sent it, looks up that key in a table to find what method it's supposed to call to get it done, and calls it.
The smoothest way to implement this involves writing a plugin, and issuing that register call inside the plugin's onAfterInitialise method, which will get called early enough in the process to make it available thoughout the templating system. If you do this, then make your modal method a static member of that plugin and you're home and dry.
If you're wanting to make this part of a component, so every output of the component has access to it, you make your method a static member of your component and register it when the component is initialized.
If you're wanting it to be a part of your template overrides, I think you can wait to register it until the template's index.php file, though there I'm on less secure ground. You might need to go the plugin route for this, but it's worth testing to find out.
And that brings me to why you may not find this better than addIncludePath. Writing a plugin is more work than simply using addIncludePath. And it moves away from having your own class to simply attaching the methods you want to use as a static member of whatever you're using to register the method. You decide which is better for your case; I'm not qualified to make that call for you.
This is all based on registering a single method, it'll get tedious as the number of methods grows. If your goal is to create an entire library of methods, such as the Bootstrap ecology, you might want to take a peek at how the Regularlabs library is installed in Joomla and emulate that.
JPATH_LIBRARIES . '/kipengee/kipengee.php'
?HTMLHelper::addIncludePath(JPATH_LIBRARIES . '/kipengee');
andHTMLHelper::_('kipengee.modal');
, then the modal script is loaded on the page. The only thing I don't want to do is useHTMLHelper::addIncludePath()