Both were built using the same compiler, and against the same plplot static library.
Running 'dumpbin PLplot_broken.dll' and 'dumpbin PLplot_ok.dll produces identical results (except of course, for the file name that is reported):

C:\>pmver PDL::Graphics::PLplot
Can't load 'C:/MinGW/perl589/site/lib/auto/PDL/Graphics/PLplot/PLplot.+dll' for module PDL::Graphics::PLplot: load_file:%1 is not a valid Wi+n32 application at C:/MinGW/perl589/lib/DynaLoader.pm line 226.
at -e line 1
Compilation failed in require at -e line 1.

sections /29, /59, and .reloc are different sizes. .text is identical size. The instructions in .text I am pretty sure (didn't look too deeply, using my tools) are identical except for the effects of relocation. The 2 DLLs have different base addresses, and both are i386 and have identical PE headers except for the relocation. Where can I get a copy of libgcc_s_dw2-1.dll? Strawberry perl 5.8.9.5 doesn't have one.