Can modports be used to isolate logic signals in an interface from tasks?

The modports are not the issue here. Modports are only used to restrict access to signals and tasks from certain connected modules. Your code has to be semantically and functionally correct with or without the modports.

The problem, as you have discovered, is rooted in the fact that these tasks try to procedurally assign signals that are also continuously driven. The rule about not mixing procedural and procedural assignments is very basic and the compiler is under no obligation to determine that the procedural assignments inside the tasks never get executed.

You can solve this problem by changing all interface signals that have this problem to wires, and dealing with them as if they were bi-directional signals. See my DVCon paper on this at The Missing Link: The Testbench to DUT Connection | Technical Paper | Verification Academy