Your concern is founded: browsers will indeed keep using their the cached (possibly outdated) copy until it expires per your config.
Here is a helpful summary of Expires vs. Last-Modified/ETag, including some suggested best practices.
Generally speaking, in your case (since you seem concerned about plugin updates) I'd go with ETag/Last-Modified instead of Expires.
One other idea: you need not bundle js files with all other types. Just a heuristic but it might help:
# can be safely cached
<FilesMatch ".(ico|jpg|png|gif|css|gz)$">
ExpiresDefault now plus 30 days
FileETag None
Header unset ETag
</FilesMatch>
# don't cache or only cache briefly
<FilesMatch ".js$">
FileETag MTime Size
# or: ExpiresDefault now plus 6 hours
</FilesMatch>