I'd have to see your CAB's INF, but I have a theory. CAB files have a limitation that they can only have one instance of a source file name. If you have more than one instance, CABWIZ will not complain or give an error, it simply will use (IIRC) the last one referenced.
This means is you have source files like this:
./en/resource.dll
./es/resource.dll
./jp/resource.dll
If you build your CAB file, all instances of the resource.dll file in the target will be identical, not the separate file you think you're pushing. To get around this you have to rename them at the source side going into the CAB.
You can use the CAB to rename them coming back out to all have the same name (i.e. resource.dll), so hand-modifying the INF can still get you the desired output structure. You just have to modify the CAB build process to rename your duplicates.