C, 257248 bytes
Thanks to @Zacharý for saving 9 bytes.
char*s="%sp(x,y){printf("%s they came for the %ss, and I did not speak out-\nBecause I was not a %s.\n\n";p(x,y){printf(s\n\n",x,y,y);}f(){p("First","Socialist");p("Then","Trade Unionist");p("Then","Jew");puts("Then they came for me-and there was no one left to speak for me.");}