I see a few possibilities...
The update action differs for run versus debug actions (since the debugger is attached to the VM and has to be taken into account) The IntelliJ IDEA help guide notes this difference regarding classes:
In the debug mode, the updated classes are hot-swapped. In the run mode, IntelliJ IDEA just updates the changed classes in the output folder. Whether such classes are actually reloaded in the running application, depends on the capabilities of the runtime being used.
Unfortunately it does not indicate either way if JSPs or static pages differ in their handling. If you do not have the issue when you run, but do when you debug, then that is likely the case.
Also keep in mind that JSPs are a strange beast. The Web container compiles them into Servlets. Not all web containers will see a change to the JSP page and recompile the Servlet. It's been a long time since I've worked with JSPs, but if I recall Tomcat can be configured to recognize a changed JSP page and recompile it. I do not recall the default behavior.
Finally, when the debugger is attached, the web container's behavior may differ than from when it is not attached.
You can also look at this SO answer -- https://stackoverflow.com/a/19609115/1348743 -- to see if there is anything you missed in your configuration.