My code returns the variable so that it can later be used, which is what we need to happen. In this particular case, it’ll later be formatted and wrapped up in an <li>.
$items = expects a value to be assigned to it. single_post_title( '', false ) says to return the post title, which means that it gets assigned to the $items array. The false part there tells the single_post_title() function to return.
Your code just directly prints the post title to the screen. Technically speaking, your code is broken. It’s just that PHP doesn’t throw an error and manages to “work,” which kind of makes it hard to track down things like this sometimes. I just happened to know how the single_post_title() function works, so this one was easier to spot than others.