I assume you are referring to the Newsletter Subscribe section in the Footer. (Since, from what I recall, the only other place to subscribe would be the checkbox when a customer is registering.)
I think adding Captcha in the footer would not look nice, so maybe a there should be a Setting like "Only allow newsletter subscribe for registered customers". If you want to do similar, the workaround is to use Resolve in the .cshtml page to check the condition - e.g. (not tested, and depends on your version of nopCommerce, and whether you are using a 3rd party theme):
In \Views\Shared\Components\Footer\Default.cshtml, there is
@await Component.InvokeAsync("NewsletterBox")
Wrap that in conditional -
@if (EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.IsInCustomerRole("Registered"))
{
@await Component.InvokeAsync("NewsletterBox")
}