By Sheet requires the view with keynotes to be on a sheet to receive a number. This allows keynote values visible on a sheet to be sequential, 1, 2, 3, 4 etc. If a keynote tag is empty then that view has not been placed on a sheet yet in order to determine what number it should receive. This also means that a keynote for
Gypsum Wall Board may be numbered "3" on one sheet and "15" on another, all depending on how many other elements have keynotes applied. This approach reduces the likelihood that a contractor will ask about "missing" keynote values.
By Keynote uses the number of the keynote based on your keynote file. This means a sheet can show keynote value like: 101, 204, 302, 601 etc. These aren't "sequential" in that there are gaps between numbers based on keynotes that exist but not used in any views on the sheet. This can result in questions from a contractor like: "Are keynotes 102-203 missing?"
It isn't possible to create a parameter that behaves like Project Address, it's the only one of its kind in Revit, built-in that way. Why? Because, like your parents used to tell you.