He’s not asking for it to work, he’s asking for it to not break other things.
As has been discussed at length elsewhere, Unity is a bit behind the eight ball in regards to including modern technologies/approaches that handle this kind of stuff (that’s not a complaint, things are moving forward, it just hasn’t got to this stuff). But as the OP has said, you can still go a long way towards it by simply making sure that any platform specific code is appropriately defined.
I too have often had to manually mess with code in platform-specific plugins to stop them from breaking other platforms, and so far it’s always been a matter of adding defines.
And since multi-platform support is one of Unity’s big ticket features and strengths, failing to take simple steps to preserve it shows a significant lack of professionalism, in my opinion. If you’re selling someone code it shouldn’t mess with things outside of its scope, and that definitely includes not mucking up the build pipeline.
Also, for what it’s worth, testing it isn’t such a huge issue now is it? Lets be clear: we’re talking about compile testing. You don’t need to buy hardware to test that. PC/Mac/Linux all have identical compilation from my experience. Both iOS and Android build options are now available from free licenses, and even iOS can now be built from Windows. Since it’s a compile issue, if you can platform switch and build to all of the above without problems then you’ve solved the issue that the OP is talking about. And if you’re going to sell something (ie: imply a commercial level of quality) then surely it’s not unreasonable to expect that at least that level of QA has been performed on it?
Whether or not it works correctly on the additional platforms is a different issue, but one that’s already covered when you announce the platforms you support - if you don’t support a platform then we know we can’t rely on it even if it happens to compile. And that’s fine, because if we buy a platform specific plugin then we probably don’t intend to use whatever it does on other platforms anyway.
I’m not completely sure, but doesn’t Unity have built in ways to look after platform specific DLLs? Put them in the appropriate platform folder and they only get included on the corresponding platforms, if I recall? At any rate, this in particular has never been an issue for me.