The following example shows one quick answer to the problem, by simply applying equality constraints for the problematic item. Using the mirt.model syntax can be more precise, though the philosophy is the same (the important part is to constrain the intercepts to be equal....for graded response models, this is typically best done for all intercepts to avoid 'out of order' estimation problems. Other itemtypes, like gpcm, shouldn't have this issue). Cheers.
library(mirt)
set.seed(12345)
nitems <- 15
N <- 1000
# parameters
a <- matrix(abs(rnorm(nitems,1,.3)), ncol=1)
diffs <- t(apply(matrix(runif(nitems*4, .3, 1), nitems), 1, cumsum))
diffs <- -(diffs - rowMeans(diffs))
d <- diffs + rnorm(nitems)
dat1 <- simdata(a, d, N, itemtype = 'graded')
dat2 <- simdata(a, d, N, itemtype = 'graded', mu = -0.5, sigma = matrix(1.5))
group <- c(rep('D1', N), rep('D2', N))
# remove some categories in one group
table(dat1[,1])
dat1[dat1[,1] == 1, 1] <- 2
dat1[dat1[,1] == 3, 1] <- 4
dat <- rbind(dat1, dat2)
# error
mod <- multipleGroup(dat, 1, group=group)
by(dat[,1], group, table)
# apply constraints (requires the second and fourth intercepts to be equal)
mod <- multipleGroup(dat, 1, group=group, invariance = colnames(dat)[1])
coef(mod, simplify=TRUE) # notice the first items are equal