Run into this issue 8 years later and wondering that this is still an issue 
In most cases nobody may notice that behaviour because usually you have tasks in the stage which are directing the build to "the correct" agent. But if you have, as example, an stage that only runs some zipping of the artifacts after an MSBuild-task/stage than it might happen that this stage is run on "the wrong" agent.
We've set requirements like "Operatingsystem match Windows" now as we had these "capability" set previous in our environment to make debuging of failing plans a bit easier. Now it helps us also here to avoid to run powershell on Linux.
I would understand that beahviour if on our linuxagents the pwsh is installed - but it is not. So there is no real reason why Bamboo runs an Scripttask, with Powershell set, there.
Run into this issue 8 years later and wondering that this is still an issue
In most cases nobody may notice that behaviour because usually you have tasks in the stage which are directing the build to "the correct" agent. But if you have, as example, an stage that only runs some zipping of the artifacts after an MSBuild-task/stage than it might happen that this stage is run on "the wrong" agent.
We've set requirements like "Operatingsystem match Windows" now as we had these "capability" set previous in our environment to make debuging of failing plans a bit easier. Now it helps us also here to avoid to run powershell on Linux.
I would understand that beahviour if on our linuxagents the pwsh is installed - but it is not. So there is no real reason why Bamboo runs an Scripttask, with Powershell set, there.