Their characters are fine.
Optimization in 5e has very little to do with individual characters, and everything to do with the party as a whole.
Unless the players are highly organized, builds with high stats and dump stats would actually be a liability. I'll explain this by comparing it to Pathfinder:
In Pathfinder, each character takes on a specific role in which their competency, assuming the character is optimized, grows exponentially. For example, a wizard may invest a level or two into multiclassing rogue, and it's better than nothing, but they won't hold a candle to the "real thing." At some point DCs for skill checks and saving throws get so high that only a specialized character has a real chance.
In D&D 5e, a character specializes in a number of things, but this generally only means that they are a step or two above the rest. For example, say a wizard takes the criminal/spy background; for 99% of your adventuring career, that wizard can be relied on to handle duties that are traditional to rogues, though they will likely approach said duties in a different way. No multiclassing required.
This is because of the bounded accuracy thing. You always have a chance. Having a decent wisdom score on a barbarian isn't a waste. Hello, mind control!
Because of this, it's less important in 5e that you specialize. Instead you optimize by having your party, as a whole, make sure that all bases are covered. And redundancy is more likely to save your bacon than a slightly higher bonus to your already-high rolls.
5e adventure design assumes players to be sub-optimal
To some extent, whether individually or as a cohesive unit. So you don't really need to ease up on anything. In early stages you might want to give them some light warnings when they're about to enter a deadly encounter. A wake-up call so they realize, "Oh we should play it smart" is more than enough for most parties.
As far as what I mean by "balance": it seems that at levels 1-2 it's
hard to keep everyone conscious the whole time since they have so few
hit points; better to anticipate a KO or two and bring your healing.
This is not a consequence of the characters being built for breadth. It's a simple matter of how fast and deadly combat is in 5e. Perfectly normal for any party.
Some DMs will start tuning down encounters once players start dropping to zero health. Don't do this! They survived, they learned, they will be excited, they will be tuning their party up.
That's when you start targeting players' weaknesses. At which point, it's a good thing they went for breadth.
Total party wipeouts are not the end in Curse of Strahd.
Check out the Adventure's League Dungeon Master's Guide v4 that accompanies Curse of Strahd. Look under Jeny Greenteeth's spellcasting services, and the block on "Death in Ravenloft." This is a canon method for continuing the campaign in the event of everybody dying horrible deaths.
So by all means throw that coven Night Hags at a team of level 5s! They might surprise you and curbstomp the things. Or they might all die and come back with some Dark Gifts.
Challenge Rating is accurate but not precise.
You can read about it in the DMG. CR is based on Proficiency bonus, HP, AC, attack bonus, damage per round, and DC on their abilities. It is not adjusted for the special abilities they have, and how those can play with different parties.
For example, I've run Death House a few times. The Shambling Mound is CR 5. It's supposed to be tough, but parties have had little trouble with it. On the other hand, each party was seriously thinking they were going to die when I unleashed that pack of five CR 1/2 shadows on them.
The CR does not account for how a devious DM may capitalize on special abilities, or how a given party may completely shut an enemy down.
Yes, it would be a noticable nerf.
Mechanically, having a familiar capable of flight - such as an owl - can indeed be rather useful, especially for scouting purposes - which is one of the main benefits of a familiar, barring RP purposes (RAW, familiars should be unable to carry anything noteworthy, so that won't be an issue).
Hence, disallowing flight for your warlocks familiar would indeed be a huge nerf, especially since familiars are generally not very useful in combat either, and you would be taking away their main out-of-combat non-roleplay purpose.
Therefore, if you can't convince your player to choose a different pact boon for her warlock - who, btw, won't have a familiar until level 3 anyways - you could allow her to choose a familiar that for some reason can't fly until the warlock reaches level XY, if that's an option you're ok with.
Of course, the in-game reason would not be tied to the level, which would be too "meta", but instead, a raven familiar could be too young or physically impaired to fly. Around the time when the warlock reaches the desired level, the raven has grown up enough or has healed, so the raven can now fly.
Also note that all creatures that are on a Pact of the Chain warlock's extended familiar list are either naturally capable of flight, or have means of shapechanging into a creature that does.
Side note
I also recommend checking out the dark wanderer's answer, which lists other reasons why you shouldn't disallow flight for your player's familiar, other than just targeting the mechanical implications of flight for a familiar, as my answer does.
Best Answer
In about 35 years of playing role-playing games, I have seldom witnessed anyone play 100% by-the-book.
A few bits of advice:
Don’t take the names of things too seriously. What really matters is the results of rules, not the names they use.
The “in game” justification for a rule may be different from the “game design” reason. Unfortunately, many games only give you the “in game” justification and leave you to puzzle out the “game design” reason yourself. When the “in game” justification and the “game design” reason seem less connected, it is often an attempt to keep the rules simple enough for tabletop play.
If a rule doesn’t seem to make sense, take a step back. Remember that somebody thought it made sense. At least some of their co-workers thought it made sense. At least some of the playtesters thought it made sense. Etc. Try to figure out why it made sense to those people. Seek out people who like the rule and ask them why. (You might still change it, but it will then be because you want a different rule, not because you misunderstood the rule.)
It is a good idea to give a rule a try before changing or discarding it.
Never be afraid to overrule a rule at the table when the results don’t make sense.
Discuss rule omissions, changes, and overruling with the rest of the group. While the group ought to give the DM the benefit of the doubt when it comes to such things, the DM ought to also consider the input of the players.
As much as possible, make sure players know about rule changes up-front. Players will make decisions and plans based on the rules. If a rule needs to be changed or clarified after play begins, talk to the players and figure out how to make up for a change that invalidates their past choices or future plans.
Never be overly beholden to consistency. If, in retrospect, a rule change didn’t turn out well, change it again. Retcon if you really need to.
(Retcons are often less necessary than you might think. The real world is messy and full of seeming contradictions. Why should the fantasy world be any different?)
Read lots of different games. Read any design notes you can find. The more you understand what rules have been tried and what the intent behind rules are, the better positioned you are to make house rules and on-the-fly rulings.
Accept now that you’re going to make mistakes. That’s OK. We all do.