@agramfort there are basically three options, as I see it:

1. Forcing the user to remember to include `info['bads']` whenever they call `pick_types()` (current behavior).
2. Not check the 'bad' channels in dropping, in which case they'd end up in the evoked (previous proposal). As you note, this is not so nice, since a) there is probably no point in having the bad channels in epochs, and b) this somewhat defeats the purposes of having an `info['bads']`.
3. Change the behavior of `pick_types()` (current proposal).

To pick all channels (including bads), you would just do `pick_types(..., exclude=[])` instead of `pick_types(..., exclude=None)`.

Your point about the API change stands, though...