We use Fiat–Shamir heuristic to turn Schnorr ZK to NIZK. So now NIZK is secure against chosen message attacks in the random oracle model, that is, ideal hash function: every unique query leads to a truly random response.
Ok, I get why our Hash function should not be reversible - otherwise, we disclose skey.
But what is the danger of collisions?
Suppose, a prover computes NIZK proof (r,c):
c = Hash( g || V || pkey || User Id || Other Info )
r = v + skey*c mod q
V = g^v mod p, v - random
Even if I find any other combination that results in c, it's unlikely I can forge proof.