How do I group matrix blocks into batches of 4?
You could use your own variable to count the matrix blocks in your loop. The code could look like this:

{% set rows = 0 %}

&lt;div class="row"&gt;
    {% for event in events %} {# loop through all events #}
        {% if event.startDate|date('Y') == now|date('Y') %} {#check to see if the event's start date is happening this year #}
            {% for row in event.authors %}
                    {% for block in row %}
                        {% switch block.type %}
                            {% case "author" %}

                                {% if rows == 4 %}
                                    &lt;/div&gt;
                                    &lt;div class="row"&gt;
                                    {% set rows = 0 %}
                                {% endif %}


                                &lt;div class="col-md-3 author"&gt; 
                                    {% set image = block.image.first() %}
                                        {% if image|length %}
                                            &lt;img src="{{ image.getUrl('authorThumb') }}"&gt;
                                         {% endif %}
                                    &lt;p class="name"&gt;{{ block.authorName }}&lt;/p&gt;
                                    {% if block.twitterHandle|length %}
                                    &lt;p class="subtitle"&gt;&lt;a href="http://twitter.com/{{ block.twitterHandle }}" target="_blank"&gt;@{{ block.twitterHandle }}&lt;/a&gt;&lt;/p&gt;
                                    {% endif %}
                                     &lt;small&gt;{{ event.startDate|date('m/d/y') }} @ {{ event.startDate|date('g:ia') }} &lt;/small&gt;
                                     &lt;hr&gt;
                                     &lt;p class="bio"&gt;{{ block.bio }}&lt;/p&gt;
                                &lt;/div&gt;

                               {% set rows = rows + 1 %}

                        {% endswitch %}
                    {% endfor %}
            {% endfor %}
        {% endif %}
    {% endfor %}
&lt;/div&gt;


It's important to set the variable outside the for loop, otherwise it does not work.