Toutes ces formules sont idiomatiques, c'est à dire qu'il n'y a pas de mot qui n'aille pas avec les autres selon le contexte; par exemple dans le contexte de ce qui peut être demandé et obtenu d'un organisme public la réponse « On n'obtient pas quelque chose pour rien. » convient au contexte en plus que d'être idiomatique; dans ce cas particulier, de même certaines des autres possibilités sont utilisable.
Le critère serait donc, non sur le plan de ce qui est idiomatique ou non, mais sur le plan de ce qui est contextuel.
Comme il est à peu près sûr que le contexte est celui de l'énonciation en tant qu'adage et non pas d'une énonciations attachées à une situation particulière de l'existence ou à un ensemble de telles situations la seule qui soit contextuelle est la dernière (On n'a jamais rien pour rien.). On pourrait la simplifier et dire « On n'a rien pour rien. » et elle serait toujours contextuelle.
Les trois premières ne conviennent pas si bien parce que, me semble-t-il, le verbe « obtenir » manque de généralité.