I don't know why I didn't realize this before, but mirt can already handle this type of model through a bit of data manipulation. In the "Factor Analysis for Nominal (First Choice) Data" article's Table 4, you can see that each category gets its own unique intercept parameter as well as a unique combination of latent variables within each respective category. However, when setting up the model in this way when modeling polytomous response data you can just transform the polytomous responses into binary indicators (0-1), created whether the item was not equal or equal to the respective category level under investigation. So, a polytomous item with 4 responses, such as
1
3
4
2
1
2
could be expressed as the matrix
1000
0010
0001
0100
1000
0100
and the columns treated as independent items to be fitted with, say, a 2PL model. This is what is performed by mirt::poly2dich() as this type of transformation can be a little tedious for a complete dataset. After setting up the data in this form it's just a matter of specifying the appropriate model and parameter constraints to properly identify an exploratory factor analysis model under this setup.
Here's an example using the Science dataset in mirt, which provides the same model information as the left part of Table 4. The model fails to converge in this case, but the concept is the same nonetheless.
#############
library(mirt)
head(Science)
newScience <- poly2dich(Science)
head(newScience)
model <- "
F1 = 1-3,5-7,9-11,13-15
F2 = 2-3,5-7,9-11,13-15
F3 = 3,5-7,9-11,13-15
START = (4,8,12,16, d, 0.0)
FIXED = (4,8,12,16, d)
"
mod <- mirt(newScience, model)
coef(mod, simplify=TRUE)
$items
a1 a2 a3 d g u
Comfort_cat.1 0.930 0.000 0.000 -4.830 0 1
Comfort_cat.2 3.257 -3.179 0.000 -7.022 0 1
Comfort_cat.3 -16.772 27.972 0.615 15.271 0 1
Comfort_cat.4 0.000 0.000 0.000 0.000 0 1
Work_cat.1 0.200 0.215 -0.369 -2.532 0 1
Work_cat.2 0.146 0.253 -0.102 -1.149 0 1
Work_cat.3 -0.319 -0.027 0.270 0.153 0 1
Work_cat.4 0.000 0.000 0.000 0.000 0 1
Future_cat.1 0.404 -0.510 -0.517 -3.676 0 1
Future_cat.2 17.575 14.985 -59.914 -67.357 0 1
Future_cat.3 -14.377 2.698 38.125 8.748 0 1
Future_cat.4 0.000 0.000 0.000 0.000 0 1
Benefit_cat.1 0.899 -0.428 -0.045 -3.355 0 1
Benefit_cat.2 42.951 44.407 11.154 -45.462 0 1
Benefit_cat.3 -53.327 -26.558 -14.412 3.704 0 1
Benefit_cat.4 0.000 0.000 0.000 0.000 0 1
$means
F1 F2 F3
0 0 0
$cov
F1 F2 F3
F1 1 0 0
F2 0 1 0
F3 0 0 1
#############
HTH.