@texnixe Sorry, I forgot to reply! Your solution of course worked like a charm (as usual). Can you explain what site()->visit('application/' . $segment_1); is doing behind the scenes? Thanks so much!
According to the comments, visit() sets the currently active page and returns its page object. The difference is if you check $page->isActive() when using the page helper, it returns false; while it returns true using $site->visit(). But don’t ask me why.
$site->visit() stores the page object as $site->page. This object is then used to get the current page in several places.
First thought: It might be a bug that routes don’t automatically visit the returned pages before rendering the page. However it might also be that this can’t be done for some reason.