Perhaps a hierarchical log-linear model would work. Picture your data as a 2 x 10 x 2 array: the first dimension is agree/disagree; the second dimension contains the questions and the third dimension indexes the two groups. You fit a series of models until you get one that fits. Thus
- condition on the margins only. This assumes independence throughout. In R, the call would be loglin(x, list(1,2,3)).
- Condition on the margins and the relationship between answer and questions. loglin(x, list(c(1,2),3). This allows relationships between the questions and allows for different numbers in the two groups.
- Then fit the full model, loglin(x, list(c(1,2,3)).
If the two groups behave the same way, then model 2 would be non-significant. If not, then not -- and you would need model 3, which implies that the groups differ.
This does not account for the fact the questions are nested in subjects, as noted by @Aniko, but the log-linear model accepts the pattern of responses it gets and attempts to model it across both groups. If there are clear differences between the groups with respect to how they respond, this test should pick them up.
Another possibility would be to write down the likelihood under the null hypothesis of no difference between groups and the alternate. Then do a likelihood ratio test. If you are prepared to ignore correlations between questions, the likelihood would be that of a multinomial distribution.
If you are concerned about correlations between the questions, you might want to go for a latent variable model with categorical predictors and look at the difference between the groups using a SEM analysis. You would want a lot of data for this and a plausible reason for a latent variable model.