What decides the location to register function/obejct?

I found some functions/objects are registered on the C++ side with macro TVM_REGISTER_GLOBAL(which defines a static member which is initialized (registered) when the so is loaded), while some others are registered via the Python decorator @register_func/register_object.

What is the guideline or caveat for deciding where a(n) function/object shall be registered?