How to determine Nonnegativity in Matrix Factorization?
Yes, the parameter nonnegative is for constraining values for both matrices: user features and item features to not have values below zeros while optimizing using ALS algorithm. It drive which solver to use: CholeskySolver or NNLS(conjugated gradient). Both are implemented in Spark mllib. 

The flag is of course connected with the input. If You have ratings below zeros and You directly pump all of Your data to model, the prediction of negatives values while You have nonnegative constrain check will be somehow hard :-)

In Your case, what's important is that You have implicit feedback. So, You should set appropriate flag or use trainImplicit method. The easiest way to find out what works for Your case best with the nonnegative flag is to threat it as another hyper-parameter which needs cross-validation check. And for me, the measurement of the model while validating is a more crucial aspect. If You are trying to do top-N recommendations, go for ranking measures like Recall@N, MRR@N or AUC.