There is no best practice as it depends on the requirements and specific use case. A spin-off creates assignments on the same case therefore locking may be an issue if they are processed at the same time. This is unlikely but may periodically occur. Subcases (with locking independent of the parent case) would avoid this issue. This is at the expense of using extra database and additional processing to deal with the subcases and data propagation (if required).
To send multiple assignments using DWA I would prefer to create sub cases to avoid locking issues because it is an external user.The application should be designed to minimize the error messages for the external user.