In these cases, 'by' can be used but it changes what the speaker is expressing.
She won't be back until 5 o'clock.
expresses that Penelope will return at exactly 5 o'clock.
She won't be back by 5 o'clock
expresses that Penelope will return sometime after 5 o'clock. There is also an implication that something else will happen at 5 o'clock that Penelope will miss.
She won't be back until after 5 o'clock.
expresses that Penelope will return sometime after 5 o'clock, but nothing else is happening for Penelope to miss.
She will be back until 5 o'clock.
expresses that Penelope was away, then returned, is here now and will leave again at 5 o'clock.
She will be back by 5 o'clock.
expresses that Penelope will return sometime before 5 o'clock.
It’s too late to go shopping. The shops are open only until 5:30. They will be closed by now.
Yes, closed here is employed as an adjective. You are correct in understanding it to designate a state rather than an event.
And it is true that the expression by TIME is used with events rather than states—as your source says, it says that something ‘happens’ (an event) rather than ‘continues’ (a state).
HOWEVER: The expression by TIME does not compel you to employ an ‘eventive’ predicate or forbid you to use a ‘stative’ predicate. In fact, the compulsion works in the opposite direction: when you use by TIME, you compel your hearer to understand the predicate in an eventive sense. With by TIME the hearer interprets a stative predicate as the result of a change of state: something happened before TIME to bring about the state you describe.
Here are examples of by TIME with three stative verbs, know, own, be:
By April he knew that the operation was a failure. ... implies that he did not know this earlier, but at some time before April he learned that the operation was a failure
By 1973 he owned 26 newspapers. ... implies that he did not own so many newspapers earlier, but at some time before 1973 he acquired 26 newspapers
By next week you will be in Toronto. ... implies that you are not in Toronto now, but at some time before next week you will go to Toronto
In the same way, The shops will be closed by now implies that earlier the shops were open, but at some time before now the shops were closed. Since it is explicitly stated that the shops are open until 5:30, we understand that this sentence must have been uttered at some time after 5:30.
The word will may have caused you some confusion. This will does not designate some time in the future; it expresses a certain inference in the present. (Linguists call this ‘epistemic’ will.) Your last sentence may be paraphrased
It is certain that they are closed by now.
Best Answer
The difference is that 'by' refers to an event that happens at a moment in time, whereas 'until' refers to an event that happens for a period of time. They can't usually be used as alternatives of each other - except perhaps when used with negation.
Using your second example, to say "He should have been here by now" means that at some point in time, prior to this moment, he should have come here. To say "He should have been here until now" would mean that from some earlier time, continuing to this moment, the person should have stayed here.
To reply to your 3rd comment to whatever's answer, no, you cannot substitute by for until in all those examples. As mentioned, it doesn't mean the same thing, but in those cases it makes nonsensical sentences.
In the examples of: She won’t be back (by) 5 o’clock. - She won’t be back (until) five o’clock, they almost mean the same and can be substituted. This is the negation I was referring to. Technically, "She won’t be back (until) five o’clock" could mean that she will turn up at five o'clock on the dot, whereas "She won’t be back (by) 5 o’clock" means that time she will come back will be after 5 o'clock.
Edit for comments:
Not always, and they're not exactly the same.
This means she won't be back before 5:00. Generally this means she will get back at 5:00 or some short time after.
Either of these will work depending on context, but neither are really natural. If you were discussing the total number of movies you've ever seen, you might say: 'I'm going to a 5-movie marathon tonight. I've only watched 3 movies until now.' Alternatively, if you were explaining how long something took by comparison you could use the second example: Where has taken you so long? You were only supposed to be going to the snackbar for popcorn. I've watched 3 movies by now.' But in the first instance you are more likely to say 'I've only ever watched 3 movies' and in the second instance 'I've watched 3 movie since then'.
With 4) the inconsistency you see is because of the negation. "She won't be back by 5.00". At that point in time she won't be here. But after that point in time, for a continuous period she will be here. Similarly, "she won't be back until 5.00" says for the period of time from now til 5.00 she won't be here. After 5.00 (i.e., from that point in time) there is a likelihood that she will be here.
I think the negation trick is the only way to use them as alternatives to each other. I can best show this by example. Given the situation of a boss asking two employees about their previous workday. Firstly, positive:
"I was there by 5.00pm and I worked til midnight." vs "I was on the day shift and I was there until 5.00."
Then negative:
"I wasn't there by 5.00 because my bus didn't show up on time. But I was only a few minutes late." vs "I wasn't there until 5.00, because that's when my shift starts."
Now, there's no way the two sentences in the first example can mean the same thing. The two employees might have met in the staff room as one clocked off and the other clocked on, but they were doing two clearly different shifts.
The second example has a similar outcome, i.e., that at some time after five o'clock, both employees were at work, but the circumstances are somewhat different. In the first case '... was not there by...' means 'was there later than', in the second, '... was not there until ...' , means 'was there at'.
I hope this clears it up.