Use a partition utility to create a very small partition on the flash drive. Then create a new partition filling the rest of the space with an invalid file system type. That will be unreadable to either system, and won't be mounted, and will make it unlikely that a virus would attempt to use that space, it would be limited to the valid initial, small partition.
Note that this still presents vulnerabilities.
Another option is to make your own USB drive. Using an atmel AVR processor with USB support, and a lightweight USB library you can make a mass storage USB device with exactly the amount of space you want. The linked AVR processor has 512KB of flash, most of which would still be available once a simple mass storage device was implemented, so you wouldn't need any external storage for flash drives of 400KB or less.
You can even go further, and make it so the flash drive won't allow writes to the boot block or other sensitive areas. With some clever design I expect you could even sanitize writes to the drive. If it doesn't look like the right data (a key, for instance) then you can hold onto it long enough in ram that if the OS requests it back to verify it was written, then it'll respond correctly so the OS doesn't realize the data has been rejected, but once unplugged and attached to another device only the most recent valid data is actually stored in non-volatile memory, similar to stealth banning.
You would have to be careful to make sure that the AVR device is write protected, so it couldn't be rewritten by a virus.