If attachments are required in a form that can be saved as a draft, should the user be able to delete it or replace only?
Let the user do what they want, then enforce your requirements at form submission.
Preventing deletion is no help to the user whatsoever. This does not help them successfully complete the form, but instead prevents them from fixing their mistakes. There's no need to prevent deletion when the user isn't even trying to submit the form yet.
It depends on what happens to the uploaded file, and on the user and the context, but I would generally say that they should be able to delete.
Without the capability to delete, it's possible for a user to accidentally upload an incorrect file... and they are then forced to leave that incorrect file in place (knowing an error has been made) until they can locate the correct file and re-upload.
For the entire time it takes from the discovery of the error to the successful upload of the correct version, the wrong version is still present. Depending on the context, this could range from being mildly inconvenient to being a catastrophic error... both of which could be avoided (or at least minimized) with a delete option.
Your question has 2 options
If there is only single attachment then the user needs to replace it.
The user will attach more than one attachments then you need to give a delete option because if the user attached 5 items at a time by mistake and he/she wants to remove 2 attachments then you need to give delete option.
There could be a legal issue here:
What if the user accidentally uploaded a document they have no right to upload?
Unless the upload is somehow like a signed contract, where you need to keep it to prove you got the signature, and you've already confirmed the signatures and entered into a contract, let them delete it.
If that leaves the job incomplete, mark the form as "incomplete" and wait with actually processing it until the missing file has been added.
To add another reason: having no file present clearly let's the user know that portion of the form is incomplete.
Consider if a user started filling in the form and uploaded the wrong file (or a file that later turns out to be wrong, etc.). The correct file isn't available—say it hasn't been produced yet. The user then notices, and can't delete it — only replace. So the incorrect file stays. And the user is forced to remember this detail—you've prevented the knowledge from being stored by the form state.
What happens if the user has to do something else, and comes back to it in a week or two? Will the user remember that the apparently-completed document section is actually the wrong document? Quite possibly not, leading to the form being submitted with the wrong document.
I think it would be better to handle the delete option with an Archive. There may be also legal side regarding deleting the documents. For eg: Signed documents should never be deleted. So, it's more a contextually driven decision based on your client. Anyway, it would be good to have a confirmation stage before deleting.