For the SAEF purposes, I found the easiest way for me is to use an embedded template on edit forms with relationship fields. The SAEF’s relationship field on an edit form would look like:
{embed="forms/.relationship-field" id="X" selected_id="Y" category_id="Z"}
Then the template, forms/.relationship-field, would look something like:
<select name="field_id_{embed:id}">
{exp:weblog:entries weblog="test" category="{embed:category_id}" orderby="title" disable="custom_fields|trackbacks|pagination"}
<option value="{entry_id}"{if entry_id == embed:selected_id} selected="selected"{/if}>{title}</option>
{/exp:weblog:entries}
</select>
So id is the number assigned to the weblog’s relationship field, selected_id is the currently selected relationship for the entry, and category_id restricts the entries shown in the relationship select field on the SAEF.
Obviously, you could use this method for any other restriction besides category since you are using just the standard weblog:entries call to generate the relationship options field.
Unfortunately, this method does nothing to clean up the relationship field on the EE CP Publish/Edit form. For that, the relationship field definition would need to support being able to predefine what category of a weblog’s entries should be shown.