Forms can not only change, Forms can also be added and removed. This is currently not covered by the code in LexemeDiffer::getFormsDiff. This code only covers changes, but neither additions nor removals.
This issue becomes visible right now when comparing two different Lexemes via an URL like …?oldid=…&diff=… with two revision IDs from two different Lexemes. This is a quite typical use case, e.g. if two entities are duplicates and the user wants to compare the two. Currently this diff fails hard with quite extreme exceptions complaining about objects where strings are expected.
Example: http://wikidata-lexeme.wmflabs.org/index.php?title=Lexeme:L13&diff=20952&oldid=58