>Pcount() in this context seems to be useless. If I pass nothing to a method that passes an empty parameter down the tree, it seems it should still be passing nothing.
When your method receives no parameters, it still creates a tcParm variable with the value .F., so DODEFAULT(tcParm) is equivalent to DODEFAULT(.F.).
You could code around this, like:
IF PCOUNT() = 0
DODEFAULT()
ELSE
DODEFAULT(tcParm)
ENDIF