I think I may have actually just found another two (it's been a long day).
Firstly, surfaces don't seem to want to go into VB components. When you try to put them in as an input they get read as BReps, which means that anything in the script that wants to treat them as surfaces is in for a disappointment. Secondly, BReps also act oddly, in that when you put them into a VB component their constituant surfaces seem to lose all trimming information. After I noticed this, I tested it out by setting up a new VB component, plugging in a list of BReps as 'x' and inside put "x = A" sure enough, 'A' outputted the same BReps but with everything untrimmed (i.e. a bit of a mess). Since getting surfaces with trim information into a VB component is super-important for what I'm trying to do does anybody have a way around this? I've tried using ShrinkSurfaces() to retrim the surfaces and even retrimming them manually but without any luck; it seems like the trim curves get corrupted somehow.
