First to shed some light on the "weird syntax". Update-NcVol is a little different from say Set-NcVol in that it acts on multiple volumes at once. To use Update-NcVol, you have to privide two inputs - one query to select which volumes the update should be applied on - and one set of <attribute,value> pair - to set for the selected volumes. Both these inputs are accepted in the form of an VolumeAttributes object.
To create a query, you start with getting an empty VolumeAttributes object by running "$queryObj = Get-NcVol -Template". Then you set details of this object to help narrow down the search. For example, if you want to apply an update to all volumes in a vserver, you set $queryObj.Vserver = vservername. If you want to run an update on all volumes which are 50% used you may set $queryObj.VolumeSpaceAttributes.PercentageSizeUsed = 50.
But VolumeSpaceAttributes is itself an object. So you need to Initialize-NcObjectProperty to create a new VolumeSpaceAttributes object and assign it to $queryObj.VolumeSapceAttributes. Then you can set it's properties (yes, Inception :P, so it may have a property which is an object itself, whose properties also you can set). You can combine any number of parameters - think of each field in the VolumeAttributes object as a filter.
To pass the <attributes,value> list you again start with an empty VolumeAttributes object "$attrbitues = Get-NcVol -Template". Then you fill up only the values you want to set. Like SpaceFullThresholdPercent in this case (again an object property needs to be initialized before you set it's properties - just like with query). Leave all the other attributes blank.
Finally you make the call as "Update-NcVol -Query $queryObj -Attributes $attributes". Once the command completes, you are presented with a list of volumes on which the update suceeded and a list of volumes on which it failed. Unfortunately, I can't find a way of getting the reason for failure out of this output. But one possibility is to enable Debug logging via "Set-NaToolkitConfiguration DEBUG" and note the outputs. That might contain the reason for failure.
Query/Template/Update, probably looks amazing on paper, so many volumes so little time, but it sucks to use. We would rather foreach a list of volumes with cmdlets than, build a query for my volumes while applying a template. We appear to be missing: