Regardless of free issue or otherwise I would suggest creating your own internal part numbers for parts you use just as it if you were manufacturing yourself. Then you can keep a list of acceptable/approved alternatives as well, later you can refer to this list to avoid using multiple parts where one might have done e.g using 0.1uF in 3 different but close voltages in the same package. If the line operator is having to cross reference a last minute alternatives you're adding inconvenience and another route to errors. As an added bonus internal part numbers are often easier to read than some of the gibberish you see on reels of passives.
If your assembler buys the parts they then have an answer to the exact part you specified not being available as you can share this list with them, our automotive customers do by default as part of their accreditation.
If you free issue be sure to understand the requirements the assembler has for kitted parts as a rule they will typically want to be slightly over-issued and tapes should be on reels with headers on, its rare for a machine to be able to pick the first or last component of a strip of tape, at least reliably, some feeders expose multiple pockets at once which also creates wastage.
If you give an assembler decent data they should be able to purchase correctly, we do the purchasing for most of our customers, partly because even the big ones don't want to buy some of the parts in the manner necessary to ensure stock, or sometime because their system can't understand the concept of them owning components that are in our building not theirs. We always look for best pricing, there's a clear incentive to do so, we also have automatic discounts of varying scales with RS and Farnell (volume doesn't matter) & credit account with mouser and Digikey, something you may not have. In this current environment I would suggest it is just as likely for a part to suddenly appear back ion stock as it is to disappear.
If you look at Newbury they have a huge stock of parts you can draw from some of which (last I checked) you can have for free. To date almost all our clients have been very 0805 focused so for very generic 0805 values it makes sense to use ours. Mixing free issue with assemblers procurement is also an idea, for instance we have a client who specializes in Radio, some of the parts they use come from suppliers we never deal with and are very expensive -they are better placed to source them than we are.
There preference of an assembler one way or another will depend somewhat on how they work. If they have a dedicated kitting/feeder loading team it is easier for them to have a "kit" come in from a customer, load that onto their feeder stock as a job, possibly on a quick load trolley and when that Job comes around it goes on the line just like that. Meanwhile the previous job can be unloaded at leisure from the trolleys they took off. this is super efficient for machine utilization, less so on people.
If they are smaller and don't have a huge feeder stock they might instead have fewer feeders and want to minimise componment changeover, no its much easier if all the parts common to sequential jobs stay on the machine/in the feeders and that is harder to do if the client has kitted everything, unless they kit multiple products at once.
Other things:
Fiducials
Fiducials
oh yeah Fiducials. (not in symmetry at least 2, preferably 3 or more, on the individual pcbs and the panel borders for bad marking as previously mentioned, 5mm+ in from the edge)
Make pin1/+ve obvious just because your centroid file has a rotation number in it doesn't mean the contractor knows which way round it goes, your CAD, our definition or both may be wrong and not follow the IPC rules (they do exist).
Put borders on, conveyors need something to hold, so do fingers and fixtures, nothing quite as annoying as a tiny board stuffed edge to edge, or double nightmare, like that and double sided. Equally flex circuits need support and PCB "fingers" should be protected both of which can often be done with borders otherwise you should be using tooling = $$$.
Generate an assembly layer if not all parts are on the silkscreen- this can be useful for all sort of reasons including the very strange assembly houses who enter their data without using Centroid files. ( no idea why, but we outsourced something recently and they did their pick and place programming this way, it took days because they "couldn't read that format" [CSV!!???] when it should have taken hours at worst. )
Use a silkscreen, in low volumes with no golden sample or other data source, building boards with no visual aids at all adds complication, its basically free these days anyway.
Worth mentioning is the blog from US contractor screaming circuits which discusses the common issues contractors encounter at all stages.