I would add one more possible cause to the list
Also check (any of) it's grand-parent Structure group properties:
if it is set to Publishable=false.
Although it doesn't seem a logical place to look for, but I have seen this behavior before.
Top of my head, one way to achieve this is to:
Implement a custom resolver
Implement logic in it checking if this is a "publish from parent" instruction
Check if you're currently resolving for one of these publications you don't want to publish
Override the resolvedItems collection to contain 0 items.
I'm sure there's many more ways to do it, but this ...
Yes, there is an option. You can always remove some publications from publication target. If you do this, it will mean that publishing (or unpublishing) from that publication will no longer be possible.
This option is if you don't want publishing from these publications at all.
If indeed you need just publishing from publication enabled, but without ...
The fact that the hyperlink is removed altogether indicates that the DXA Model Service/Extension did process/resolve the link, but link resolution didn’t provide results (i.e. the linked Component is not found on any published Page). In that case, the hyperlink is suppressed.
So, all seems fine except that the link doesn’t resolve whereas you do expect it ...