It was a bug. It is fixed in the Marlin RCBugFix branch (as of at least yesterday) on Github. Things are working fine now that I've upgraded.