Floor: single vs tiled

It depends on what type of variation you’re talking about. If it’s just different flooring between rooms, I would split those into separate meshes, for instance if it goes from tile to carpet. That would still be very efficient and the split between the two materials would hide the lighting variation.
If you’re looking for variation within a material, there’s many ways to create some extra detail, stuff like masks you can create using textures or vertex colors and decals like you said. I’m not sure the performance impact of decals, I would imagine it’s fairly good, most likely all decals of the same type are batched together so they only use one draw call.