I think kongondo is close
You can build top level entries using a PageArray. Only top level items are supported, once MSN got a PageArray it will recursively parse the tree from those top level entries.
You could do this
$items = new PageArray();
// add pages to PageArray
$home = $pages->get("/");
$items->add($home);
$events = $pages->get("/events/");
$items->add($events);
$photos = $pages->get("/photos/");
$items->add($photos);
$options = array(
"selector_field" => "nav_selector"
);
$nav->render($options, null, $items);
but now make use of the "selector_field" option https://github.com/somatonic/MarkupSimpleNavigation#added-support-for-nav_selector-propertyfield-and-selector_leveln-new-in-121 default it is "nav_selector". When MSN finds a page with this property (either field or added at runtime) it will take that value as a selector to find/filter the children (if it has any).
So if you want to have a custom selector on the "/events/" page it would look like this:
$items = new PageArray();
// add pages to PageArray
$home = $pages->get("/");
$items->add($home);
$events = $pages->get("/events/");
$events->nav_selector = "limit=5, sort=-eventdatefield"; // define a selector
$items->add($events);
$photos = $pages->get("/photos/");
$items->add($photos);
$options = array(
"selector_field" => "nav_selector"
);
$nav->render($options, null, $items);
Now adding a additional item at the end is something I would add using JS (jquery). And also let the "Events" top menu entry link to the full list anyway.
To get something to target the JS script you could use "inner_tpl" with a placeholder to add name or id to ul's and add that to the options array:
$options = array(
'selector_field' => 'nav_selector',
'outer_tpl' => '<ul id="nav">||</ul>',
'inner_tpl' => '<ul id="{name}">||</ul>',
);
Then do something like this with JS
$("#nav ul#events").append($("<li><a href='/events/'>more</a></li>"));