From https://www.lutron.com/TechnicalDocumentLibrary/040249.pdf, main repeater supports DEVICE / GROUP / MONITORING / TIMECLOCK commands. IMO, only the DEVICE command is useful for accessing the phantom buttons. The other stuff you can do better with HE already, so agreeing with you there to just treat main repeater as a keypad.
Regarding Keypad button / led mapping:
Here is a list of common devices:
Main Repeater:
button: 1-100
led: 101-200
SeeTouch Keypad / Hybrid Keypad:
button: 1-7
Button Top Lower 16
Button Top Raise 17
Button Bottom Lower 18
Button Bottom Raise 19
led: 81-87
Tabletop SeeTouch Keypad:
button: 1-17
Column 1: Lower 20
Column 1: Raise 21
Column 2: Lower 22
Column 2: Raise 23
Column 3: Lower 24
Column 3: Raise 25
LED:81-95
GRAFIK Eye is too complicated. It probably deserves to be its own device. Also I doubt many people actually have it. Maybe not worry too much about it.
I actually prefer your option 1, because it exposes exactly what Lutron exposes as-is. However, that's a backwards incompatible change and not very intuitive for user who don't understand the Lutron telnet protocol. It will probably piss some people off, but it's the most generic solution to expose everything and the least amount of work for you.
For option 2, if we really want to do this right, I would add a type parameter for Lutron keypads which supports 3 types: Main Repeater, SeeTouch Keypad / hybrid keypad and Tabletop SeeTouch Keypad. Then implement the mapping differently for 3 different types. The logic could be as simple as:
if type == MAIN_REPEATER
led = led - 100
else
led = led - 80
If you want to put in more time, preset the number of buttons differently for the 3 types. Not a big deal if you don't.
Hope this helps. On a different note, I'm really hoping HE can open source the built-in drivers and apps. Instead of talking about it here, I'll just send you a pull request.