To clarify, the values for the coordinates are not tile coordinates, but block coordinates if this is clearer, blocks being a size of 10x10 tiles. Because of this, whenever you increase or decrease by 1 either coordinate, the placement will shift 10 tiles over in the corresponding direction. The same goes for the 2 last values, they are how many blocks wide and long, not tiles.
By what I can see in the images, some of the craft seem to be even larger than 20x20, maybe even using a 20x30 map definition, you would need to view the MAP files to verify those. And then you have other craft that appear to be smaller. In the case of the smaller craft, they will spawn within the rects area defined, but at a random block within it. Let's say you define a rects of [1,0,2,3] but the craft MAP only uses a size of 10x20 the game can allocate them to any of these 3 positions [1,0], [1,1] or [1,2] since they are all within the defined rect.
There's a technique you can try with labels and conditionals to get it to work with different size craft MAPs. Do note that the size taken into consideration is the size defined in the MAP file of the craft, not the size of the craft itself, if I've made sense there. Basically, you could have a craft defined in a MAP of 20x20 that only uses 1 quarter of said map, the size would still be a 20x20 as per the definition in the MAP file.
Anyway, a sample of the technique would be as follows:
mapScripts:
- type: CARGOSHIP
commands:
- type: addCraft
label: 1
rects:
- [1, 0, 1, 2] #Fits only size MAP crafts of 10x20 or smaller.
- type: addCraft
label: 2
conditionals: [-1]
rects:
- [1, 0, 2, 2] #Fits only size MAP crafts of 20x20 or smaller.
- type: addCraft
label: 3 # Can be omitted if no other conditional checks are made.
conditionals: [-1,-2]
rects:
- [1, 0, 2, 3] #Fits only size MAP crafts of 20x30 or smaller.
- type: addBlock #Spawn Ship
size: [3, 7]
This script will ensure the craft will spawn as close as possible to the North of the map. The engine will go sequentially through the addCraft attempting to fit the craft in the defined area, if it's succesful, then the remaining addCraft will be skipped since the conditionals requires the commands with the corresponding labels to fail. If on the other hand it can't fit the craft, that command will fail and the next one in line will be attempted. Note that for this to work properly, you must always go from the smallest to the largest rect size, otherwise a small craft map will always fit in the largest rect and placed randomly within it.
For your last issue... perhaps I'm not entirely correct about craft always spawning at map level 0 but the engine trying to fit the craft height wise with the floor it has, if the craft is too "tall" then it starts to embed them as needed. You could try defining a larger height for the map either in the deployments or with a resize command in the script and see if this is the case or not as I'm just speculating at this point.