Have to agree with all of the disagreements to this. The 404 is a 404 for a reason, just like 301 and 302 are different for a reason. It's not uncommon though for WordPress to do things like this, or blogs for that matter. If an author changes the title or date of their post, and the URL structure is reliant on those two pieces of data, then the URL will change. The old URL is preserved in a DB and if accessed again, 301s to the newly named resource. Others, will throw a 404 and give a cutesey Levenshtein message, "did you mean x?" at which the user can decide to go to the new resource. It's all circumstantial... It shouldn't be enforced.
Re: Google and PageRank, pretty certain they've addressed this and recognize 302 and 301s and treat them the same. Previously, this was an issue.
I politely disagree with ending up with more boilerplate code with marionette... you're ending up with _less_ boilerplate code when using marionette with backbone, and even when including marionette, your "boilerplate" code is necessary configuration... binding dom elements, events, template handling, rendering, data serialization... even more so if you're doing it in CoffeeScript.
behold... a view in 3 lines of code.
class Views.AlbumTracks extends Marionette.CompositeView
className: 'album-tracks'
template: 'album-tracks'