That's been a feature since the Justin.tv days. Some broadcasters choose to automatically run an ad every 30 minutes, for example. Twitch's broadcaster UI supports this, and has for a very very long time.
Opting in is a different story, and I don't object to an individual broadcaster choosing to do this.
If you stream speedrun attempts, a block of ads every 30 minutes probably isn't going to cause viewers to miss anything of significance, so it's probably safe to flip that switch. Of course, when the ads show up at the wrong time in that case, it's probably very upsetting.
But if you stream a show with banter between hosts, and you already manually run ads every hour while preparing for the next segment of the show, and you still get interrupted in the middle of the dialogue by an ad? That's horrible.
If you stream a competitive game (DotA, LoL, Overwatch, Warzone, etc), and your amazing comeback from behind gets interrupted by an ad, you're going to lose both short term and long term revenue.
Long term because viewers will get frustrated and leave. Short term because viewers seeing a great play are more likely to donate and gift subscriptions to celebrate the moment. But if they don't actually see it, you can't get that hype train started, and you lose out and so does Twitch.