I really hate solving my own problems! But, oh well,...
It does not appear that the SPI interface is "owned" as I implied. However, the structures defining the interface must be permanent in memory. In my code, the structures were locally defined by the init routine and thus on the local stack. Once the initialization routine exited, that memory was freed up for other uses.
My moving the declaration for:
dspi_master_user_config_t userConfig;
dspi_device_t spiDevice;
dspi_master_state_t dspiMasterState;
outside the scope of the initialization routine, they become fixed in memory and now the interface works as desired. (Note: Unless explicitly declared static, they will have global scope which may or may not be desirable. This depends on your coding style.)
In the example mentioned in the original post, these were defined at the top level of the task and thus remained in the task's stack area. So, any routine running under this task would have access to the variables. However, tasks running with a different stack would not.