I am looking for specific guidelines for when to use Web Services frameworks versus a well-documented custom protocol that communicates using XML over HTTP.
I am less concerned about performance than I am about maintainability and ease-of-development both for client-side and server-side code. For example, I can develop a custom protocol that talks XML without writing tons of descriptor files that Web Services frameworks seem to require.
Please list specific features that Web Services bring to the table.
The benefit of WS is typically derived from tooling support to generate the clients, server stubs and descriptors, and pipeline benefits such as security, encryption, and other extensibility. Without the tooling the burden to roll and process WS requests is high, and the value to your outcome is relatively low.
IMO if you don’t have tools – both approaches seem to be pretty high maintenance. Pick the shortest path. If you do have tool support, go the WS route and let the tools do the heavy lifting.