Non ho capito completamente il tipo di comportamento nei vari casi.

Pero` dal tipo di valori proposti, molto probabilmente hai problemi di arrotondamento.
La dimensione dei caratteri visualizzati sullo schermo e` un valore intero: 12px, 13px, ... ecc.
I vari %, em, ed altre unita` di misura vengono poi convertiti dal browser nei corrispondenti valori in px e quindi visualizzati.
Ad esempio, il fatto di dichiarare 100.01% anziche` 100% ti forza un arrotondamento per eccesso in molti casi; ma il 95.01% non credo che faccia lo stesso.
Se hai un carattere "base" di 12px, e lo moltiplichi per 0,9501 puo` diventare 12px o 11px a seconda dei casi (e dei browser); ma non cambia molto se moltiplichi per 0,9500. Potrebbe cambiare se il valore di partenza fosse piu` alto, ad esempio 20px: in tal caso avresti un risultato di 19px, che con il 01 finale sei sicuro che nondiventa 18. Pero` in ogni caso e` difficilmente apprezzabile ad occhio (ci vuole l'occhio di un tipografo per distinguere due font cosi` simili: 18 e 19px).

Questo ragionamento, applicato ai tuoi dati, puo` chiarirti il comportamento che ottieni.