The current code is this way since a fix in 2010 (v3.1). It depends on the philosophy that view nullability meta-data is unreliable and we can't sync that properly anyway.
Looking at the code, it indeed doesn't make much sense to have it only for tables and not for views as meta-data can be reliable. There's a caveat though:
we only sync nullability if entity field isOptional == old view's target field's nullable. If the values differ, we consider that a manual change (otherwise they'd have been the same) and manual changes won't be overwritten, not for tables and not for views.
So in your situation, after this change, you still have to drop/recreate the entities once. The values are then equal, and subsequential refreshes will be syncing the nullability.
That's the good news.
The bad news is that for v5 we have discontinued the cli refresher as the sync system has changed completely. For the future it might be it will come back but for now it won't be part of v5.0, so you have to use the designer for the refresh.
We'll make the change in the next build for v4.2, we can't see a breaking change in this, as it only has effect when the meta-data changes, and the user has to take action on that if that makes a difference anyway.