una textarea non svolge alcuna azione particolare e non interpreta nulla. è il browser a farlo a seconda di come gli vengono serviti i contenuti.
in un'anteprima questi possono essere renderizzati in maniera diversa dall'esposizione finale (dipende dal programma in uso).
nello specifico, per il carriage return, non viene generato un br ma un carattere ascii (13) normalmente non visualizzato dal browser e renderizzato. questo potrebbe esser il motivo per cui "talvolta va a capo altre no" (forse hai inserito il ritorno a capo senza far caso alla coincidenza con br?)