Tramp doesn't use "df" itself. It comes from dired, which calls
dired-free-space-program (Emacs 21) or directory-free-space-program
(Emacs 22) via call-process.
Since Tramp 2.1.5, call-process and start-process have been extended to
run processes also on remote hosts. This is desired, because it
doesn't make sense that dired checks the size of a local file system,
when it works on a remote one.
"df" supports the -P option also on Solaris; one must use the Posix
version "/usr/xpg4/bin/df". You should customize tramp-remote-path in
order to have "/usr/xpg4/bin" on top (maybe this should be the default?).