Triangles are culled by backface and object culling. So if you have a sphere, typically, the forward-facing tris are rendered while the backfaced tris are not. But by making the sphere double-sided, now the engine is filling all the backfaced tris on the sphere, doubling the vertex rendering for that object. And it’s doing this even if one pixel of the sphere is in view (technically, the object bounds). Keep in mind modern GPUs can handle millions of polygons, so you won’t ever reach a situation where making a single material double-sided will have a real notable performance impact (unless you’re rendering translucency or exceptionally high-polycount objects).
It’s a good idea in modern graphics cards to split up materials and take advantage of specialized shaders, tilable textures, and stuff like that. A flag on a flagpole is an excellent example: the flagpole might be made of metal or paint, and therefore should have a different material surface than the soft fabric cloth. And yes, the cloth can be rendered two-sided while the pole is not, but that’s not really significant.