Firstly, Im presuming you have some mechanism (js?) that allows for the value of the hidden input to be set to 1... otherwise it would always force the inputs to be required, and a simple required would do. That said...
The suggestion by Screenbeetle, whilst good is not correct. Sometimes is used when you need to chain a check to another, for example:
['username' => sometimes|email]
It's like a softer required, in that it doesn't force the key to be in the request, but if it is, it enforces the validation rules against it. Whereas required would fail because its there... essentially, sometimes is an 'its optional' approach.
The better option would be to use one of the required options.... I would say that in this scenario, the most descriptive is either required_without or required_if (one you suggested yourself)... both working the same way.
There are maybe better ways to handle things from both a UI and UX point of view, but would need more info about what is happening around the form :)