nirgrahamuk is correct. But just in case you're interested in a more in-depth explanation, here's the long version.
There are two distinct "flavours" of verbs in dplyr; selection verbs and action verbs.
Selection verbs (like select or rename) understand names and positions. For example, when we type select(iris, Sepal.Length:Petal.Length), select is actually translating those names into their corresponding positions. Thus the result is the same as if we had typed select(iris, 1:3). These verbs support the use of tidyselect helpers such as starts_with() or all_of().
Action verbs like mutate or summarise on the other hand generate new vectors. Supplying column positions to these verbs does not make sense. In fact, group_by() is also an action verb, because you can generate new grouping variables on-the-fly like so:
library(dplyr, warn.conflicts = FALSE)
iris %>%
group_by(Sepal.Length > 5) %>%
summarise(n = n())
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 2 x 2
#> `Sepal.Length > 5` n
#> <lgl> <int>
#> 1 FALSE 32
#> 2 TRUE 118
Created on 2020-07-16 by the reprex package (v0.3.0)
Given this background, it should be easy to understand why supplying all_of() to group_by() didn't work. group_by() tried to create a new vector called all_of(myColumn) by recycling the value x to the length of the result.
What we need are variants of these action verbs that understand selections viz. the scoped variant _at which has the vars() helper function. So you could use group_by_at() instead.
library(dplyr, warn.conflicts = FALSE)
myData <- data.frame(x = c("A", "B"), y = 1:6)
myColumn <- "x"
myData %>% group_by_at(all_of(myColumn)) %>% summarise(y = sum(y))
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 2 x 2
#> x y
#> <chr> <int>
#> 1 A 9
#> 2 B 12
Created on 2020-07-16 by the reprex package (v0.3.0)
And since across() is the modern re-imagination of the scoped variants, it's hardly surprising that it understands selections.