I don't know, but I am going to take a guess.
The ExecuteScript function is fast - very fast! This is because I believe it runs directly in browser and I don't think it waits for the page have completed loading.
Where as the FindElement function has to go thru a few steps before running in the browser and it waits for the page to load fully.
I am thinking that your web page is being generated and then widgets on the page are being refreshed to show a new status.
In-between the page being generated and the widgets being updated I think the ExecuteScript is running and it can successfully click on the element.
FindElement is a little slower, so I think it is running after the page has completed loading and at that point the element you are targeting is not interactable.