Casey, how are you sending the newsletter? Is it an RSS feed or something else? If RSS, check out perkuto.com's Digesto to manage this.
As for the form itself, sure you can do this. I'd probably setup a String field called Newsletter Frequency and the form would say "Daily" "Weekly" or "Monthly"
As for sending the newsletter, you could do an engagement, you could use Digesto, or you can manually create Programs and use the Newsletter Frequency as a filter. A single campaign is not going to do much for you other than drop people into another Program or Stream.
If you're predominately sending out blog posts in your newsletter - Josh's (correction) previous company does a good job at that 😉 Just tested Digesto not too long ago and was pretty happy with it, easy setup zero complaints. .
I wouldn't change anything about the way I made or sent emails, but rather when someone fills out that form -- and selects weekly or monthly, have a smart campaign running to make them marketing suspended for 1 week or 1 month. 2nd choice would be to go with an Engagement program, but that doesn't lend itself to the "newsletter" idea.
Personally I've seen people create wild subscription programs that fall on their face when they forget to put filters on every smart campaign after that.
@Adam, if you use suspension, are you suspending everyone once again after each send? If i'm a lead and sign up for the monthly newsletter on say Janurary 10th, with my next schedule send for montly on January 18th, am i not to receive that first monthly newsletter till February send?
I personally find, be it not traditional newsletter infrastructure... using engagement programs streams as smart campaigns for each list would drastically decrease the labor of effort here. This would completely eliminate the need for smart campaigns as you mention, i agree, it's prone to error having to put filters.
@Casey, When all send and done Digesto is the way to go if you're pulling in blog posts via RSS, but if your newsletter varies from this, it might be a bit more tricky as your emails are standardized in Digesto.
How you would segment the leads daily weekly monthly is via a smart list tied to a smart campaign which is linked to Digesto to run on send. Each segement is its own "digest".