List Table action argument not cleared

Let me start with a question: What if the user simply refreshes the page after the action is processed? It will resubmit the action.

So the issue is not only with the links for the sortable column header and how WP_List_Table is generating them but with the way you are handling the action requests.

The best practice is to redirect the user back to a URL excluding the action parameter after processing the action, and have the page rendered on the second request instead of rendering it on the action request.

For example:

  1. User starts here: admin.php?page=wpml_plugin_log
  2. User sends a request to admin.php?page=wpml_plugin_log&action=delete&id=123
  3. Delete action is handled
  4. User is redirected back to admin.php?page=wpml_plugin_log&delete_success=123

As you see above, you may also add some other parameters (delete_success) to the redirect URL to pass the state of the handled action to the second request.