Computer programs are great at performing the specific tasks they've been designed for and useless for anything else. Chess engines are no different. It's just not worth it to design an engine so that it can manage these sort of edge cases.
As far as the engine can calculate, Black has a huge material advatange and after the sequences of moves it can see, if keeps that advantage. In the overwhelming majority of chess positions, the correct way to interpret this fact is that Black has a much better position.
Given enough time and computing power, Stockfish would realize there's no way to deliver checkmate within the next 50 moves, but keep in mind that computers don't have our human intuitions. All they can do is perform a search on the move tree and apply an evaluation function to each of the relevant positions. It can't think in terms of "all my bishops are on light squares, so 7 bishops are effectively the same as just 1".
As for why -28 and not -21 or any other number, well, from a certain point on all evaluations are pretty much the same. If you see -7, -15 or -60 that just means "I think Black is winning but I can't find a specific line that ends in checkmate". Evaluation functions are designed to find nouance in positions that are close to equality, but not so much when we have unbalances as big as this one. Either way a bishop being worth 3 points is just a heuristic for human beginners, not a rule engines would take seriously.