What is best way to organize a scene with different sets of materials? I am currently creating an interior scene and want to show different examples of wall/ floor materials to my customer. So I was thinking about how to organize my scene when I want to have different sets of materials on my objects.

Right now I have about 15 objects that use the same wall material (partly on a few faces only) and 3 wall materials I want to show (paint, wood, tiles). 

What do you think is the best way to do that?

My first idea was to simply copy all the walls to a new layer and then change the material. 
pros: one click - switching between scenes
cons: - file becomes bigger
- Objects are not linked, so if I change something it will be in one scene only

==> Is there a way I can create a linked object without linking the material? 

Second idea was to attach all the materials to the same object and change them by applying them in edit mode (I will have to create vertex groups for the faces I need).

pros: I don't create unwanted copies of my objects
cons: I will have to do that manualy for every object

Third idea is to turn every material into a node group, then create a kind of master material (called something like "wall covering"), add all the node groups to this material and switch between them by connecting the node groups to the material output - node.

pros: 1click - changing of material on all objects at the same  time
- no copies of my objects

cons: if I want to make a change to a material I will have to change the node group instead

Has anyone experience with any of these solutions or any new ideas? Are their any important pros/ cons I didn't think of?

I am currently using the beta of blender 2.8.
Thank you for posting your question so clearly.
Yes, there is a better way to do this, specifically for Archviz.


Create a SPHERE or GRID, apply desired texture material.
On your scene, FIRST select your wall-to-be-changed-material, then select the sphere/grid you created to represent your material LAST. Hit CTRL+L (Link data shortcut) and select MATERIAL.

Now, repeat for all geometry that will use that material. In my example picture, everything in the house that will use the PINK material, are "CTRL+L" (Linked) to that material. 



Have your material nodes ready and separated to connect EACH material into the corresponding "LINKED MATERIAL sphere/grid".
This is how you can change materials amazingly quicker without the need to enter groups. This way you change all your properties visually -by literally interchanging- the material output connector.

Notice the first thing is to link geometry to this other geometry which contains the TEXTURE. (1). Inside that material you have all your OTHER MATERIAL NODE GROUP options. So it is easy for you to single connect (interchange connect) when you touch that material (for the sake of the example: I´m going to call the ball mesh material "GRASS", so I know all GRASS elements are depending (LINKED) to this material. 
Then, on the shader tree, I can have other NODE GROUP options to reconnect other option materials (2).


If asset library was here (Blender 2.8 new feature) we could do just "drag drop" materials on this LINKED mesh. But since we can´t now (feature probably available by May or later), then all we are left to, is to have the group nodes contained INSIDE the material, but not connected until you want to switch them.

Thanks if you vote me up as ANSWER to your question.
Cheers.