This is going to get me downvoted, but it needs to be said.
As a marketer, I really wish people behaved logically. If they want to get emails, they opt-in, and they don't want to, they don't opt-in. That's the pervasive belief here based on the comments I've seen so far, and that's really clean right?
However, the truth in my experience is that people don't. This black-and-white segmentation IMHO ignores a middle segment of customers who don't care that much one way or another. They are the ones who don't even see the checkbox, whether it's checked or not, they're just trying to move through a form.
If you don't have opt-in, and when you email them later, some of them do convert. When you move to opt-in, you lose your connection to those customers and your overall re-capture rates go down. You throw the baby out with the bathwater. And the increased engagement from those that are left isn't nearly enough, especially if you have a hard limit on the number of purchases at a time like I did (online financial product).
This is what I know based on the data I've seen in one business. Now if I conjecture, I think opt-in works best for businesses email is your lifeline. Think knowledge-based businesses like I will Teach You to Be Rich - if that guy didn't have email, he'd be screwed. He needs to build trust and he does that through sending you relevant, useful content. So they use opt-in to really make sure their deliverability is top-notch.
Other companies have many channels of acquisition, and send so many emails, that if a few customers click spam, it sucks but it's OK.
So I don't have a great solution. I think the one that works OK is providing prominent unsubscribe options and making it really easy for customers who don't want to receive any more messages to do so. But it's not perfect - we still get spam complaints and people swearing they unsub'd 5 times and still get messages. I don't want to message people who don't want to hear from us, but you need a signal to do so.