The ACPI.SYS driver itself is not at fault here, it’s just a generic bytecode interpreter that’s the same in every Windows install. The problem lies with the bytecode—the “ACPI tables”—that the firmware of these specific devices feeds it.

There is nothing physically forcing it to run the code that’s stored in the motherboard flash, though; it could, say, use a patched version instead. The equivalent function is well-supported on Linux, because Linux uses a different interpreter (the reference one from Intel, in fact) and in general manages the hardware differently enough to regularly expose bugs in the ACPI code of manufacturers whose QC pass condition is “boots Windows” (all of them) and who can’t be bothered to fix bugs not affecting Windows (almost all of them).