MartinJD it has to do with major vs minor updates from Composer point of view. When you install extensions using require and do not specify a version, composer uses the minor-only constraint in composer.json (^x.y.z). The official update instructions use Composer update, which will check for those constraints and therefore for this to work, all community extensions should have a minor update that will add compatibility with Flarum beta 14. However in practice that's not the case, as many developers chose to release a major version for their beta 14 update.
Some developers did so knowingly, some probably did it unknowingly. According to semver, when using 0.*, every update at the second level is a major update, and Composer uses that convention.
Using version constraint * basically tells Composer we always want to update to whatever most recent version exists, even if it's a major update in the semver sense.
There are pro and cons for using ^x.y.z or * in composer.json, though it mostly depends on how the webmaster plans to use Composer. For admins who only run Composer to install/update extensions one by one, and to update Flarum all at once, * is probably a fine choice. For admins looking to automate security/feature updates, it would make sense to use ~ or ^ requirements in composer.json so composer update can be used with limited risks. This assumes Extension maintainers properly apply semver to their releases, because if that's not the case, there's no real benefit to using ~ or ^ in composer.json
You can read more about Composer constraints here https://getcomposer.org/doc/articles/versions.md#stability-constraints