Does that mean it may or may not run the code in parallel once compiled? Doesn't seem very ergonomic to the developer if true.

Why isn't it ergonomic? You just read the documentation or source for the Applicative class in question to find out.

If the Applicative class chooses to decide randomly whether to run in parallel, that's the class's fault, not the language or the compiler's problem.