The digispark implements the circuit schematic recommended by the V-USB developers, which they suggest to be the most universally reliable while remaining compatible with 5v. I would not suggest deviating from their recommendations, especially where it adds more components, complexity, and cost!
I haven't seen postings from anyone who has hooked the data lines up to a scope to see what they look like. With the digispark being plugged directly into the host USB port there is no cable capacitance, and with no capacitors on the board the ringing is going to be significant. I'd bet that when going low the voltage drops below -1v. Going high it will likely go over 6v, then drop once the 3.6v zener starts to conduct, swing down to ~3v, until it stabilizes around 3.6.
A 220pF capacitor is ~1c, even in low volume. It should reduce complexity in the sense a cleaner signal is simpler to process.
As I mentioned in an earlier post, I'm keeping the 1.5K pullup resistor. It wouldn't work anyway - after you mentioned it, I checked the datasheet (table 21-1, pg 162). Rpu = 20-50KOhm, which is way to high to be able to pull the line up over 3v when there's a 15K pulldown resistor on the other side.
Besides adding the capacitors, the other hardware change I'd suggest is moving the data lines to pins 5 & 6, with D+ on pin 6 (PB0). With that change it's possible to read a bit and do NRZI decode in only 4 cycles:
in x1, USBIN ; D+ -> x1[0]
eor x1, x2 ; NRZI decode
ror x1 ; x1[0] -> C
ror shift ; C -> shift[7]
in x2, USBIN ; D+ -> bit 0 of x2
eor x2, x1 ; NRZI decode
ror x2 ; x2[0] -> C
ror shift ; C -> shift[7]
With an extra cycle per bit, there's enough time to do unstuffing. I plan to do end-of-packet detection when there's a bitstuffing error, like it's done in high-speed USB (instead of se0 detection).
I have written some draft code that should be able to work at 8Mhz; at that speed there's 16 cycles for every 3 bits of USB data. My code only needs 28 cycles to receive 6 bits, so I had to put in a few nops. At this point it's only on the back of an envelope (literally), and I have yet to even download AVR studio. Before the summer is over, I hope to have something working.