Insert a div before the wp_nav_menu

How do I go about inserting a custom div before the wp_nav_menu() adds the ul?

That’s what the 'container' array key defines: the element that contains the menu.

The menu will always output as a <ul>, wrapped in a container of the type specified by the 'container' array key: either a <div> (default), by passing 'div'; <nav>, by passing 'nav'; or none, by passing false.

So, if you want to wrap your nav menu in a <div class="menu-button">, use the following array arguments:

array(
    'container' => 'div',
    'container_class' => 'menu-button'
)

(Though, again, 'div' is the default value, so you can omit it if you want.)