I've found the best way to keep my cat in check with the space he can have is to give him his own blanket or throw to sleep on. He gets half of my two-seater sofa, but when clients or visitors come, and I need the whole sofa, I move the throw to the spare chair (or even on the floor) and he takes that.
He has another blanket in the bottom of the wardrobe where he hides when he thinks the world is ending (the dustmen turning up), which is actually quite handy because in an emergency I can pull out the blanket with him on it.
And finally, most recently, I've given him his own blanket on top of my duvet because it seems he is allergic to the new washing powder I've been using. I've noticed that when I move the blanket to the side or the bottom of the bed he will choose that, because it has his smell, rather than sleep directly on the duvet. It's quite cute these days; I don't have to pick him up and take him to the bedroom, when I go to bed he is often already asleep on his blanket on top of the bed.