The subgroup generated by reflections is normal, and therefore is finite-index by the Margulis normal subgroup theorem (as long as the rank is $\geq 2$, so $|p|\geq 2, |q|\geq 2$).
The conjugate of a reflection is a reflection. In fact, a reflection may be defined as a matrix element $A$ such that $I−A$ has rank 1. This is clearly conjugacy invariant. Also, if you conjugate a reflection in the vector $v$ by a matrix $B$, then you get a reflection in $Bv$.
There's also the congruence subgroup property, so any finite-index subgroup is a congruence subgroup (in rank >1). What you can do (in principle) is start enumerating congruence subgroups (and use Reidemeister-Schreier to find generators), and start multiplying together reflections. Eventually, you will find generators of a finite-index congruence subgroup which are products of finitely many reflections. Take the normal subgroup generated by these (assuming we have included a conjugate of every reflection) in the finite quotient to determine the subgroup generated by reflections.