hmmm... good question. actually, i think it depends on the program. most programs will require a "-" in order to work correctly... others, like tar, might try to intelligently parse thier arguments. remember, every command is really a program of one type or another, written by someone who may or may not have taken the - into account.
just to be safe, always use a "-".