How to hide custom shapes' object for bones in armature?
Unlink these objects from the scene:

import bpy

bpy.context.scene.objects.unlink(bpy.context.active_object)


Pros:


There will be no clutter, even no extra stuff in outliner
You will be able to still see them in the dataview outliner.
Bones will still use them as shapes
They won't be deleted with file save
It will still work with file linking


Cons:


You will have to link them back to scene to make changes, so do this last
Other people won't know what's going on, it's not standard and I would do this only on personal projects
It might not work with future blender releases, its a hack.