I don't understand what comment-indent-new-line is supposed to do, nor
which variables modes should set to make it work correctly.
To tell you the truth, I don't know either. The way I see it, M-j
should be bound to a function that funcalls comment-line-break-function
(whose default value is comment-indent-new-line). So modes can modify
comment-line-break-function (ideally via add-function) to tune
its behavior.
F90 is a "free text style of languages and comments" like C++, so one
doesn't understand why its comments behaves differently...
I see now that it behaves differently because f90 tells it to, via
f90-comment-indent. Try:
! bla
! bli
and then hit either TAB or M-; on the second line, and you'll see it
gets indented by 1 more space, just like in your example.