The problem here is that the Cygwin utilities such as bc follow UNIX/Linux and expect LF as the line terminator, but the Windows CMD echo generates the Windows-standard CR/LF combination as its line terminator:
CMD> echo 1+1 >file.txt
bash$ od -tx1 file.txt
0000000 31 2b 31 20 0d 0a
0000006
Hex codes 31 and 2b represent characters 1 and + respectively. Notice that echo also includes the trailing space character between the second 1 and the redirection operator > before terminating the line with 0d 0a.
I know of no clean way around this, so you have to strip the CR using another tool such as tr:
CMD> echo 1+1 | tr -d '\r' | bc
2
Best would be to avoid mixing Windows CMD and Cygwin entirely. For example, use the Cygwin echo rather than the one from Windows CMD. Or even bash -c "/usr/bin/bc <<<'1+1'" (although if you're not careful that will fire up WSL instead of using Cygwin).
As an aside your alternate attempts actually include the quotation marks in the text sent to bc. Windows CMD echo literally copies its entire line onwards, including any trailing spaces:
CMD> echo "1+1" >file
CMD> type file
"1+1"
CMD> echo '1+1' >file
CMD> type file
'1+1'