After hiding an object (screen icon) that is an asset, dragging it into the viewport from the Asset Browser to create a duplicate would attempt to unhide it. However the unhiding wouldn't be evaluated/synced properly, so it was still hidden in the viewport. The Outliner would show it as visible.
There was also a failed assert:
BLI_assert failed: source/blender/editors/object/object_add.c:2168, copy_object_set_idnew(), at '(id_iter->tag & LIB_TAG_NEW) == 0'
That is because copy_object_set_idnew() depends on the properly synced/evaluated visibility for both the selected_editable_objects iterator, and the new-ID relinking. The latter eventually calls BKE_main_collection_sync_remap() which syncs the visibility flags, but only after the fact.