From my experience, GetParameterAsText() and GetParameter() are preferable to sys.argv[]. sys.argv[] has a character limit (I think it's 1024) while GetParameterAsText() doesn't have a limit. I know that 1024 is a lot, but I have exceeded it on occasion for data buried in a deep folder hierarchy. If you need the raw number (integer, double), use GetParameter().
(Prior to 9.0, I think, GetParameterAsText() wouldn't work when called from the OS prompt, so you had to use sys.argv[] unless you always ran as a script tool. This limitation was fixed at 9.0)