I perceive a problem which would depend on whether you know the column type you want to have or not... but the technical way to do what you are trying requires library(rlang)
df <- tibble(x = 1:3, y = 3:1)
l <- dim(df)[1]
a <- c("a", "b")
for (i in a) {
df <- add_column(df, !!sym(i) := rep(NA, l))
}
sym to treat character of 'a' (or 'b') as a symbol , bangbang !! to force an evaluation, and := to allow the for left hand size to be determined programatically.