My guess is that either the li or its parent has a width of 0. If either has a width of 0, the text would still show but the background won’t. Display: inline takes up as much width as it has content, so it wouldn’t have that issue.
The padding-right rule is too big and it squishes the ul, which in turn squishes any li with display: block. Since .menu-show’s parent is the body, 10% is interpreted as 10% of the entire page width.