It isn't so much upsides and downsides, as being careful to add a single
bit of functionality, without messing up present behavior and
expectations for a highly-trafficked bit of code. I think we can agree:
1. To leave the buffer name out of it (don't handle leading spaces
differently)
2. To require `buffer-offer-save' to be explicitly set non-nil in order
to to consider a non-file buffer for potential saving. I think
Kaushal's right that we should require both `buffer-offer-save' and
`write-contents-functions' to be non-nil
3. To leave the current behavior of the PRED argument unchanged
So I think Kaushal's solution is good: it won't change anything at all
except to add a clause saying "when `buffer-offer-save' and
`write-contents-functions' have been set non-nil, consider the buffer
for saving". That's only going to happen when someone explicitly
requests it.
Kaushal Modi