As you say that both set of features (train and test) have the same underlying latent variables then I think one way would be to train a factor analysis model (with the same number of factors, say K) separately on both the training and the test data. Once you have the new representations of the training and test data (in terms of the K latent factors), you can learn a model from the training data and apply it on the test data.
Edit: As Alexandre pointed out, the factor analysis approach I suggested above actually wouldn't do the right thing in this case due to the identifiability issue in factor analysis.analysis. One hack that you might try is to cluster the test data features (128 in number) into 16 clusters (i.e., the number of features in the training data). Then pick each cluster center as a feature for the test data which would give a new feature representation for the test data.