Also note on my Linux host, dmesg says the following...
In recovery, where adb works:
[3555497.423815] usb 2-1.6.2: new high speed USB device using ehci_hcd and address 115
[3555497.522672] usb 2-1.6.2: New USB device found, idVendor=1004, idProduct=6204
[3555497.522676] usb 2-1.6.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[3555497.522679] usb 2-1.6.2: Product: LG Android USB Device
[3555497.522681] usb 2-1.6.2: Manufacturer: LG Electronics Inc.
[3555497.522683] usb 2-1.6.2: SerialNumber: LGOTMSxxxxxxx
[3555497.522794] usb 2-1.6.2: configuration #1 chosen from 1 choice
[3555497.526502] cdc_acm 2-1.6.2:1.0: This device cannot do calls on its own. It is not a modem.
[3555497.526563] cdc_acm 2-1.6.2:1.0: ttyACM0: USB ACM device
[3555497.530690] usb0: register 'cdc_ether' at usb-0000:00:1d.0-1.6.2, CDC Ethernet Device, xx:xx:xx:xx:xx:xx
Under the ics kernel, where adb does not work:
[3555564.304636] usb 2-1.6.2: new high speed USB device using ehci_hcd and address 121
[3555564.416558] usb 2-1.6.2: no configurations
[3555564.416563] usb 2-1.6.2: can't read configurations, error -22
[3555564.508061] usb 2-1.6.2: new high speed USB device using ehci_hcd and address 122
[3555564.615993] usb 2-1.6.2: no configurations
[3555564.615997] usb 2-1.6.2: can't read configurations, error -22
[3555564.707479] usb 2-1.6.2: new high speed USB device using ehci_hcd and address 123
[3555564.728162] usb 2-1.6.2: no configurations
[3555564.728167] usb 2-1.6.2: can't read configurations, error -22
[3555564.819157] usb 2-1.6.2: new high speed USB device using ehci_hcd and address 124
[3555564.839843] usb 2-1.6.2: no configurations
[3555564.839848] usb 2-1.6.2: can't read configurations, error -22
[3555564.842918] hub 2-1.6:1.0: unable to enumerate USB device on port 2
I am not a USB guru, but it seems to me that the composite device is not initialized properly. That is most likely a kernel issue, but I'm not going to discount something in userspace -- say, a change that I forgot in the init.rc or whatever.
Not sure how much this will help, but I remembered seeing it when digging in the V7_15 ICS kernel. These lines come from init.rc and are different from what I see in your current init.rc on github.
# Used to disable USB when switching states
on property:sys.usb.config=none
stop adbd
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/bDeviceClass 0
setprop sys.usb.state $sys.usb.config
# adb only USB configuration
# This should only be used during device bringup
# and as a fallback if the USB manager fails to set a standard configuration
on property:sys.usb.config=adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 05C6
write /sys/class/android_usb/android0/idProduct 901D
write /sys/class/android_usb/android0/f_diag/clients diag
write /sys/class/android_usb/android0/functions diag,adb
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
# USB accessory configuration
on property:sys.usb.config=accessory
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 18d1
write /sys/class/android_usb/android0/idProduct 2d00
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
setprop sys.usb.state $sys.usb.config
# USB accessory configuration, with adb
on property:sys.usb.config=accessory,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 18d1
write /sys/class/android_usb/android0/idProduct 2d01
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
# Used to set USB configuration at boot and to switch the configuration
# when changing the default configuration
on property

ersist.sys.usb.config=*
setprop sys.usb.config $persist.sys.usb.config