Toutes les grammaires le recommandent, même la plus récente1 :
La virgule est souvent placée avant la conjonction mais, or, donc, car lorsque les éléments sont introduits par cette conjonction.
• En général je ne trouve pas particulièrement séduisant ce genre d’accoutrement, mais sur elle c’était seyant. (Serge Joncour, L’Écrivain national, 2014.)
• Tout est bon dans le film pour faire japonais, or les studios manquent d’accessoires (Éric Faye, Éclipses japonaises, 2016.)
• Il serait dommage de rebrousser chemin, car sitôt passé cette porte, on gagne un autre monde. (Nicolas d’Estienne d’Orves, La Gloire des maudits, 2017.)
Grevisse précise (§ 125) :
Lorsque les éléments unis par mais sont brefs, la virgule peut manquer :
Il a conçu pour elle un sentiment ardent mais honorable (Labiche, Grammaire, VIII). — Sa faiblesse était immense mais douce (Mauriac, Genitrix, p. 28).
Sur ce point, Drillon (p. 188), toujours subtil, analyse un contre-exemple de Victor Hugo :
Il est nuit. La cabane est pauvre, mais bien close. (Les Pauvres Gens.)
[…] dans sa ponctuation, Hugo marque l’opposition ; la cabane paraît encore plus pauvre, encore plus close. Ceci rattrapant cela avec plus de vigueur encore.
Le paragraphe de Grevisse se poursuit ainsi :
Même parfois avec des éléments assez longs [la virgule peut manquer], mais ce n’est pas à recommander : Il verse des redevances non négligeables mais moins lourdes que celles qui frappent les catégories précédentes (Le Roy Ladurie, Carnaval de Romans, p. 45).
Je dois cependant constater que la « dévirgulisation » est en marche. Nombre d’auteurs contemporains ne mettent jamais de virgule avant mais et car, pas plus qu’avant une relative explicative.