Why is the survival probability decreasing the more variables I use? I'm using coxph in combination with survfit and I observed that, e.g., when I use the following syntax
coxph(Surv(time, event) ~ 1, data = df)

coxph(Surv(time, event) ~ position, data = df)

coxph(Surv(time, event) ~ position + country, data = df)

that the survival functions move more and more leftwards as more and more variables are used, thus, decreasing in time a certain survival probability has achieved. I wonder why this as the data, especially time and event, do not change when considering more variables?!!
The data comprises ~4500 devices which have components built in described by levels of position. Furthermore, they are used across the world with 20-30 countries.

If you're including factor variables in your coxph model and not specifically accounting for that when you produce the estimated survival curves, the curves are probably not what you want. As @Jarle notes, the survfit function produces an estimate of the survival curve for an observation with average covariate values. This is in general not equal to the average survival curve of the whole population.
This is especially not equal to the average survival curve if there are factor variables included. Instead surfit will use the reference value of the factor variables.
Here's some example code illustrating the difference. The first plot is an estimate of the average survival curve, and it comes from the model with no covariate. The second model includes the group covariate, and the naive survival curve is significantly shifted to the left. The second plot is not an estimate of the overall survival curve (despite what the title of the plot says!), but is instead an estimate of the survival curve for the reference group. This is obvious when we plot the survival curves for both groups at the same time in plot 3, we see that plot 2 and the red line for plot 3 match exactly. Also, the estimate of the average survival curve from plot 1 is between the red and blue lines in plot 3, as expected.
library(survival)
library(survminer)

n <- 1000
group <- sample(1:2,n,replace=TRUE)
survtime <- rexp(n, rate = 0.7 - (0.3*group))
group <- factor(group)
censortime <- runif(n,0,10)
event <- censortime > survtime
time <- pmin(survtime,censortime)
dat <- data.frame(time,event,group)

mod0 <- coxph(Surv(time,event) ~ 1,
             data = dat)
mod1 <- coxph(Surv(time,event) ~ group,
              data = dat)

newdat <- data.frame(group = factor(c(1,2)))
conditional_mod1 <- survfit(mod1,newdata = newdat)

ggsurvplot(survfit(mod0),
           data = dat)


ggsurvplot(survfit(mod1),
           data = dat)


ggsurvplot(conditional_mod1,
           data=newdat)


Created on 2022-04-01 by the reprex package (v2.0.1)
Note that there is no reason the curve should shift to the left specifically when adding the factor variable, it could shift to the right if the reference group has a longer survival time than average.
EDIT: The role of the newdata is explained in the documentation of survfit.coxph,

newdata
a data frame with the same variable names as those that appear in the coxph formula. It is also valid to use a vector, if the data frame would consist of a single row.
The curve(s) produced will be representative of a cohort whose covariates correspond to the values in newdata. Default is the mean of the covariates used in the coxph fit.

So, the relevant change is to use survfit(mod, newdata = newdat) instead of survift(mod). That makes the fitted curves use the values in newdat, instead of using the average covariate value and reference level of factor variables.
Because ggsurvplot requires a data argument I also used the newdat in that function, but that's secondary to the survfit function.
