While Kentico has OOB single Newsletter Subscribe webparts, and a "My Account" Web part that allows users to be removed from subscriptions they already have, what you are describing may need to be done custom, unless i'm mistaken.
Within the Kentico structure, there is a
CMS.Newsletters.SubscriberInfo and a
The subscriber is the person, and there is a "
CustomData" field on the SubscriberInfo that you can SetValue("Name", object) and GetValue("Name") on. This is where you would store the additional information for that subscriber, such as a dictionary of the subscription newsletters along with the frequency they wish to get those subscriptions. You'll need to code a custom webpart that will list your newsletters with a frequency, and then either update the existing subscriber or create a new one and add in this info.
Next you would actually subscribe them to the newsletters they are subscribed to (
CMS.Newsletters.SubscriberNewsletterInfoProvider.AddSubscriberToNewsletter(subscriberId, newsletterId, when))
Lastly you'll need to add an event hook (CMS.Newsletters.NewsletterEvents.GenerateQueueItems.Before) to check if the particular newsletter should be sent out to the user (maybe also add a "DateLastReceivedNewsletter" dictionary to the subscriber so you can see if the date between now and the last received newsletter is greater than their frequency?)
Hope that helps!