The approach I'd take here with seaborn's plotting functions is to draw the faceted plot akin to your example and then iterate over the axes to add the background line on each one:
titanic = sns.load_dataset("titanic")
g = sns.displot(titanic, x="age", col="class", kind="kde", fill=True)
for ax in g.axes.flat:
sns.kdeplot(data=titanic, x="age", fill=False, ax=ax, color="r")

If you add common_norm=False
to the displot
call, every distribution will integrate to 1 and it may be easier to compare the shapes (this looks a little bit more like your cartoon):
