"variable c (no optimization variable)" is not something that one can say in linear and (mixed) integer programming. There are decision variables and there are parameters (coefficients). That's it. There are no local variables as in computer programming. It is best to look at things as solving large sparse systems of linear equations.
Now, Gurobi has one very useful feature: indicator constraints. They take the form of implications with a binary variable on the left and a linear constraint on the right. We can use this to formulate: "If $a\le b_i+x_i$, the variable c should take the value of a parameter z, otherwise it should be 0." Well, more or less. As stated it looks wrong. What if for one $i$ the constraint holds and for another it does not? So I will assume the problem is more like:
$$
\begin{aligned} & a\le b_i+x_i \Rightarrow c_i = z \\
& a\gt b_i+x_i \Rightarrow c_i = 0 \end{aligned}
$$
As we cannot have strict inequalities, here is my suggestion to implement this:
$$\begin{aligned}
& \delta_i = 1 \Rightarrow a\le b_i+x_i \\
& \delta_i = 0 \Rightarrow a\ge b_i+x_i+0.0001 \\
& c_i = z \cdot \delta_i\\
& \delta_i \in \{0,1\}
\end{aligned}$$
Again, the implications can be implemented in Gurobi in a straightforward manner using indicator constraints. $\delta_i$ is an additional binary variable.
In practice, I would drop the 0.0001 and keep the model a bit ambiguous in case of equality (the model can then pick the most profitable branch). If all quantities involved are integers, we can replace 0.0001 by 1.
Instead of indicator constraints, it is also possible to use big-M constraints. They require a bit more care, as we need to worry about good bounds.