This is an interesting conundrum. As has been pointed out, POSIX specifies standard options (which are all short):
http://news.ycombinator.com/item?id=5165058
But these are not universally supported:
http://unixhelp.ed.ac.uk/CGI/man-cgi?ps
What to do? My proposal: do what we do in the C/C++ world when presented with portability problems: abstract it away. POSIX sh supports functions, which can be named appropriately for readability, while calling the proper arguments and commands for different platforms. To avoid unnecessary duplication of platform/argument detection, setup could be done in a function called before anything else to create variables with the appropriate command names and arguments.
This may all seem too involved, but realize that we are talking about creating robust software that is to be maintained, so applying proper software engineering principles seems appropriate.