The reason to not return false from IsModifyOriginal is to prevent styles, etc. from being cloned into the active model in OnPreElementModify when you don't want to copy elements. When not copying OnPreElementModify will only accept elements from the active model or a self-attachment.
Remember that MstnElementSetTool is a modify tool base class...you can't change elements in a non-activated reference so it's explictly setup to not call OnElementModify for elements that can't be modified...
I'm a little confused why you want OnElementModify called when you don't intend to modify the elements?!? You may want to consider overriding ProcessAgenda and iterate over the tool agenda entries to extract the information you want...don't call super to avoid the base class attempting to modify/copy anything. If you do this it probably doesn't make much difference whether you return false from IsModifyOriginal or override SetLocateCriteria...it's hard to say 100% as this wasn't what the base class was setup for...
You could also probably just override OnPreElementModify, move your OnElementModify logic that doesn't want to actually modify anything here...and always return ERROR to block the modify/copy...
It would be better to call __super::SetLocateCriteria and then call mdlLocate_allowLocked as the base class implementation also sets up the override for the ACS so that it doesn't interfer with locates, you could also just add the call to mdlState_setCoordinateLockOverrides (OVERRIDE_COORDINATE_LOCK_ACS) yourself...but in general it's best to call super when you aren't sure what the base class implementation is doing...and you won't know. :)
HTH
-B