For me personally, every software job I've done so far - including both the ones where I was one of few (or even the only) coders in the company, and ones where I was but a small cog in a multinational corporation - all of them had an availability component. Usually in the form of being there to answer some question, or help someone who's blocked or slowed down by an issue I'm the best suited to resolve (or the only one in the team/branch/company who can).
I do not think that I will ever encounter this level of productivity ever again.
Well, our system almost never creates that kind of emergency, but we think this is a fair assumption.
Imagine a private business accepting these terms from a client.
On the other hand, we're a bunch of lazy sysadmins and don't prefer to work if it's not necessary. As a result, we design our systems for resilience, so any problem both doesn't get big, and can wait the next morning, or next Monday 99% of the time.
Also, we definitely love what we do, hence we sometimes choose to take some work off of our colleagues' hand on a slow night. So, I personally prefer to read a tech doc, learn something and apply to on our systems if I have nothing better to do instead of watching TV.
IOW, we're not losing sleep doing our job.
TL;DR: It's acceptability depends on the circumstances a lot. If the employer is abusing you with that stick, that's bad. Otherwise, I see no problem.
One rule I learned to stick to: never install apps for company e-mail and IM chats on your personal smartphone. Just don't. Otherwise, you never truly "leave the office for the day".
I'd love to join a union to be able to reasonably bargain against this.