Looks great!
One minor comment: If the snippet has default properties (or a user creates them), isset() will always return true on those properties. If they're empty, the empty value will be used instead of your default.
The usual solution is this:
$prop = $this->modx->getOption('propName', $scriptProperties, 'default', true);
The final argument makes it use the default value if the property is empty and the default will be used if the property is not set. Of course you need to handle things differently if 0 or an empty string is a valid value.
MODX sets $scriptProperties for you -- an associative array with all the properties and their values.