A few comments...
Assemblers hate tubes, as they take time to load, and picking can be unreliable (and they can be put in backwards) - some places will re-reel tubed ICs to reduce downtime on the P&P machine - Get SOICs on tape wherever possible - sometimes this is a choice between manufacturers for similar parts (e.g. 74HC logic, voltage regulators etc.).
Device programming - it's rarely true that manufacturers prefer to program on-board unless there is already some testing going on that needs a pogo-pin jig etc. They will usually use external programming companies who will program devices (some will also source parts, and their bulk-buying power may cover all or part of the programming cost) , as well as mark & re-reel for very little cost - pennies per part. There will be a setup cost so you need to be into a few hundred before this is viable.
Microchip have a very cheap and flexible programming service, so you can set up your own part numbers, and then buy ready-programmed parts, labelled/marked and packaged as you specify. I think you can also set it up so your assembly house can be authorised to order your preprogrammed parts if they are sourcing other parts as well. Another benefit of the Microchip service is you can get parts reeled at lower quantites than you can buy blank parts on reel, to avoid using tubes.
Panelisation - if your PCB is rectangular, it is usually cheaper to do a V-scored panel instead of routing unless you need the smooth sides, as there is less wastage (smaller overall panel size due to no gaps), and breakout takes less effort than breaking out tabbed boards. A panel with lots of small PCBs can take a lot of time (i.e. cost) to break out. If you do use tabs, put them on the edges, not the corners (as shown on Dave's example) , as depanelising tools
like this manual one need space for the blade either side. Powered versions of these are also commonly used - ask your assembler what clearance and rout width they need for their depanelising equipment.
Similarly on odd-shaped PCBs, think about where to put the tabs to allow access to a tool - for curved PCBs you may need to add extra rout-outs into the waste to allow the straight blade to get in there.
If you have parts that overhang the PCB edge (e.g. USB sockets), remember that this will overhang an adjacent PCB in the panel!
Fiducials - it's a good idea to make these not symmetrical about the panel, so if the board is loaded the wrong way round the fid check will fail to alert the operator.
Gold plating - another benefit of gold, especially on proto and hand-assembled PCBs is that the colour contrast against the silver of solder makes it very easy to spot non-soldered joints, or where paste is inadequate.
Another general point - make your PCB as small as you can - the PCBs will be cheaper, and if you can get more on a panel this will reduce assembly cost. With odd-shaped PCBs, consider how efficiently they will panelise, and adjust if needed.
Many assemblers keep common stock parts, e.g. 10K resistors, 100n caps permanently loaded on machines - ask them about this. Also, if they are buying parts for multiple customers there may be some savings to be made getting them to source parts instead of supplying them with kits.
When sending them a kit of parts, if the parts are expensive enough to not justify a full reel, you need to include spares to cover the wastage due to the take-up and trailer their machines need - typically a minimum of 6 inches, plus a few percent to cover mis-picks. Label any particularly expensive parts & ask them to keep any that come out during loading or rejected during assembly - P&P machines can typically be programmed to place rejected parts in specific bins.
If you get a part-reel back from an assembler DO NOT cut off the loose cover tape & empty part of the tape, as this is used to thread-up the reel next time - if you cut it, you'll lose a few inches worth of parts next time.