First, put this on your page to see if your date placeholder with the modifier actually returns a timestamp rather than a human readable date:
<p>DATE: [[+date:strtotime]]</p>
I think that the getDate snippet is overkill for your use, since you just want a timestamp.
Assuming that the test above comes out OK, I think the real problem is that calling getDate uncached delays its execution, so it's not available when the modifiers are processed (i.e., the lessthanorequalto modifier is processing the tag, rather than the timestamp). Calling it cached won't help since you won't get the current time except when the cache is cleared.
I think the best solution is a custom snippet (*much* faster than a series of output modifiers):
Here's the code (untested):
[[!DateCheck? &date=`[[+date]]` ]]
/* DateCheck snippet */
$date = $modx->getOption('date', $scriptProperties, '');
if (empty($date)) {
$output = 'Empty Date';
} else {
$dateStamp = strtotime($date);
if ($dateStamp === false) {
$output = 'Date could not be parsed into a timestamp';
} else {
$output = $dateStamp <= time()
? 'Show'
: 'Hide';
}
}
return $output;