Non mettere mai \marginparsep a zero perché esso rappresenta la distanza orizzontale fra la scatola che contiene la nota e la scatola che contiene il testo; l’aritmetiche che io ho scritto fa sempre in modo tale che la larghezza delle note marginali sia calcolata per differenza fta la \fulltextwidth, la testwidth e il separatore \marginaprsep, quindi non li puoi fissare separatamente..
Il pacchetto nonfloat non serve solo per le figure marginali, ma anche per le altre figure e tabelle. I pacchetti wrapfig e picinpar sono più adatti a gestire quelle cose e accettano il comando \caption. Loro pensano a inserire direttamente la figura nella colonna delle note marginali, quindi non c’è nemmeno bisogno di definre nulla per quelle figure o tabelle.
geometry va bene, ma, attenzione, che la sua griglia di composizione non prende mai in considerazione le note marginali e quindi tocca sempre al compositore determinare la larghezza delle note marginali per differenza (in definitiva con i miei comandi 😎 o con comandi simili)