I have isolated the fault, so in case someone else is searching for it, here is my findings:
There is no fault using ActiveState Perl or StrawberryPerl (msi version) if you don't use debug.
The root cause is that when using Portable Perl there is an 'open' command in a module that is loaded automatically before Nimbus::API
(Specifically, the Portable.pm module uses Parse::CPAN:YAML::Meta to read the portable.perl file in the root of the portable installation.)
It is this opening a file that somehow causes Nimbus::API to Segfault when it calls the bootstrap XS function in API.dll
My tests show that any call to 'open' in any module loaded before Nimbus::API will cause a segfault. This includes the debugger (which indirectly calls Portable.pm). It is not specific to the module, file or anything else. I expect this means that you may find this fault on an installed version of Perl if you have some includes that open files.
Solution:
I moved the content of portable.perl into a __DATA__ section of Portable.pm (which lives in vendor/lib) and replace the call to
Parse:CPAN::YAML::Meta::LoadFile ( $config )
on line 207 of Portable.pm with
Parse:CPAN::YAML::Meta::Load (join('',<DATA>))
This seems to be a CPAN requirement, so in my use case it's not even needed.
My Perl code is now running unmodified on many variants of Windows in both 32 and 64 bit environments .