wp_nav_menu $theme_location parameter ignored

The documentation is wrong. Check the source. There are two telling comments. First there is:

// Get the nav menu based on the theme_location

And after which there is another comment that reads:

// get the first menu that has items if we still can't find a menu

Following that last comment the code runs wp_get_nav_menus and loops through every menu on the site hoping to find one that has associated items. In other words, wp_nav_menu tries desperately to create a menu and will use the first one it finds. I don’t understand the logic behind that code. I get the concept of fallbacks, but this strikes me as fallback overkill.

You will need to wrap your code in has_nav_menu to prevent this behavior.

if (has_nav_menu('nonsense')) {
  wp_nav_menu(array('theme_location' => 'nonsense'));
}