If a plugin A has an optional dependency on plugin B, and has marked an @Extension (optional=true), Jenkins will properly fail to load that extension. However, if plugin B is then later installed, the optional dependencies from plugin A are not re-evaluated.
Jenkins should keep track of optional extensions which failed to load, and retry them when new plugins are installed. Perhaps it could only due so if the plugin for that extension expressed an optional dependency on the newly installed plugin, but even that doesn't seem necessary?
This is really just a usability issue (since you can restart to fix it), but may prove frustrating for novice users.